Strange, since I see the GC method as being a lot more work. I guess it's all comes down to personal preference.
How can it be more? If the only place your objects exist is in their collections, all you have to do the BMax way is remove them from those collections. Your way you have to remove them from those collections and delete them.
Crashing with an error message is always better than silently ignoring a problem which may easily become a debugging nightmare in the future.
I guess that depends how often it happens. If it's a big obvious one that makes you say "whoops, what a dink I am, I forgot to destroy that", then sure. If it's a little doozy that hides away deep in the program, it occasionally crashes on the user, giving them a very bad impression of your program. Whereas the BMax way, it occasionally uses a bit more memory than it really needs. And they'll just blame Windows for that anyway XD