Yes, I agree it would be better in the core - I've left it open to Gideon, he's welcome to take my work and put any and all of it in the core as he likes and I'll remove the plugin.
It doesn't hook into any events... just a layer that checks if a question is closed or not, adds buttons and processes a "close_question" or "reopen_question" post.
One thing I didn't mention is this implements a new database table "^postmeta", which is how Wordpress does this sort of thing, I think (anyway, I got the table from Wordpress). It would be nice to have this sort of thing standardized so we were all using one table. The table goes like this:
given the pair post_id n and meta_key x, there is an arbitrary meta_value y.
So, any plugin can set metadata for a post as it likes using this table. In this case I'm inserting a fake array of the form "userid^reason", where userid is the user who closed the post.