Oh, it runs so much deeper than that. I originally implemented add/remove hook as an extension to the existing packman code, months and months ago, but I realised that it wasn't how I wanted things to operate.
So I tore the rulebook up and designed a structure that really pushes and emphasises hooks. There's no version checking done, for example, unless file edits are done, because the plugin system works on the principle that the hook's existence is sufficient. You don't need to worry about version numbers etc. if the hooks are present and tests are done at install time to validate that the required hooks are available. On top of that, a plugin can indicate that it provides hooks of its own giving you an implicit dependency system.
On top of that, the plugin file also indicating things like settings means that the plugin manager can clean them up on uninstall. As I learned the hard way, authors don't generally do things thoroughly, and mods that do proper housekeeping to clean up after themselves are unfortunately rare - so I made sure to take as much away from that as possible.
Default values of settings are declared (though due to updateSettings()'s behaviour, default values of 0 aren't updated to the system) and so can be used to clean up on uninstall, plus it's possible to intimate language support - multi-language readmes were supported in SMF 2.0 RC2 onwards but I don't think anyone ever used them. But now, if multi-language readmes are given, they're firmly used (so it encourages people to use them)
Each element of the plugin manager was designed around things I observed as flaws with SMF's mods, and things I learned from doing SimpleDesk. I'm not saying it will work for everyone but I feel like it's working for us. I've not found many problems in writing plugins and I find the way everything is held together to be more reliable in the long run.