There's two distinct concepts that are conflated for statically linked executables.
On process death vs on module death. Is the function to clean up the process, or is it to clean up the module?
I think the argument for module cleanup is stronger, irrespective of the difficulty of registering code that's supposed to last longer than the calling address space. The module had nothing before it was loaded, it should leave nothing behind when it is unloaded. It's symmetrical.
The difficulty of providing an executable callback that outlives its module just seals the deal.