Well this took some head scratching and poking in the source code. From what I could decipher, this.modified was not being created/filled for the added record but was if I edited/modified an existing record in the grid. Looking to see where and how this.modified came from I came across this comment
"Store#add will call this automatically if a Writer is set"
at the code for the createRecord function in the source for the store. createRecord looked to be the only thing that put something into this.modified using the line:
"this.modified.push(rs[i]); // <-- add to modified"
Hummmm, so I created a dummy writer and added it to the config for the store.
Code:
var dummyWriter = new Ext.data.JsonWriter();
var myStore = new Ext.data.GroupingStore({
...
writer: dummyWriter
});
and now my added records get marked as dirty in the grid along with any edited ones and both added and edited records get returned when calling getModifiedRecords() for the store.