I think Steam installs a daemon that watches for game aliases being dragged into the Trash, and then deletes their locally installed content.
Maybe Apple could provide a builtin mechanism in MacOS (as I assume/hope it's about to be called) that watches for a .app bundle being dragged into the Trash, and offers the user a chance to remove any auxiliary files created by that app, and run its uninstallation scripts if any, when the Trash is being emptied?
Of course it will have to be seamless and resistant to developer abuse (or malice) and not make everything too Windows'y.