I think I see what you mean. RowExpander needs the grid to be set in the constructor whereas CellEditing only needs it to be set by init time.
The first thing to note is that RowExpander is a UX so you should expect it to be less tidy than a proper part of the framework. I agree it would be better if you could create it separately using Ext.create.
There's a comment in the source of RowExpander that explain why it needs the grid at construction time. It's relying on the grid features mechanism and apparently that must be done before the plugin's init method is called.
The preferred method for creating plugins is to use the config-style. For CellEditing you should really be writing something like this: