I think it all comes down to preference.
Quote: "Shouldn't all the resources used in a terminated DBPro
program be freed by all the respective DLLs included with the project excutable? Whatever the case is, how does it determine the teardown order?"
There is some decorated destructor that DBP can call but I don't know what it is. DLLMain should signal ProcessDetach though once all handles have been freed.
Yes, it's the responsibility of each plugin author to handle memory allocation and deallocation. For example, I've experienced memory corruption when accidentally loading the newton physics DLL multiple times with LoadLibrary. Sometimes it's just not handled correctly.