If you are displaying editable data in a list, then using an editable root collection sounds right. Of course it would be a collection of BusinessBase-derived objects that would have one boolean read-write property and then read-only properties for display to the user - so it would be a pretty trivial object on the whole.
But I think you are over-complicating the data access. BusinessListBase-derived objects only implement DataPortal_Update(), and in that method you are responsible for processing all child objects in some manner. It seems like it would be easy enough to loop through the child objects to build your database query such that you could delete all the selected items in a single database call.
Your idea about using a Command object is also quite workable, and in some ways could be more efficient, because it wouldn't necessitate sending the child objects from the collection back to the server (since most of their data is read-only anyway). Your ReadOnlyListBase-derived root object could have a Save() method (of your design) that builds the Command object and executes it.
On the whole, I think I'd opt for a combination of the two Use a root BLB, containing BB children. Then override the collection's Save() method to send a Command object to the server to do the actual work. That is the best overall use of the various base classes at your disposal.
Copyright (c) Marimer LLC