Two questions in this thread.
Regarding the first:
As you can see in GridViewPresenter.cs (in IdeaBlade.Cab.UI), the detail grid(s) is (are) created by invoking the DevExDetailGridViewBuilder (set by the view at presenter injection time because it's dependent on the particular view technology--DevEx in this case).
The DevExDetailGridViewBuilder (in IdeaBlade.Cab.DevEx) actually creates the grid, creating a detail grid binding manager and binding it to a Relation property of the master object.
Unfortunately, getting at the detail grid binding manager and its data source is tough since they are not exposed to the presenter. You can inherit from DevExDetailGridViewBuilder and override CreateDetailGrid(). Call the base method, then, before returning, set the detail binding manager into the DetailGridViewContext (you'll need your own derived detail context class to have a place to put it).
The next problem is that the type of the detail grid builder is hard-coded into the DevExGridView rather than being taken from the GridBuilderService.
You might be able to inherit from DevExBasicGridView and override the InjectPresenter() method. Call SetPresenter(), then call
pPresenter.SetDetailGridViewBuilder(new MYDetailGridViewBuilder(GridBindingManager));
to substitute your detail grid view builder for the standard one.
I haven't tried this, so there might be some gotchas I've missed. You'll have to make the call as to whether its worth it.
Regarding, the second question, yes you're on the right track. By overriding DevExBasicGridView you can inject your custom presenter type.
The master grid is created by GridViewPresenter when the ViewContext has been set.
Bill J.