It's similar in spirit to the init, ready and destroy built-in facets. The majority of users don't write plugins, if they can't write user code to handle context-level events, these events aren't very useful.
As to how to do it, I don't know. Maybe through new options to the wire factory? But then you can't handle events of the root context. Maybe an additional parameter to the global wire() function.
The same mechanism may also be used to allow users to also handle component events in the context level, I mean those general lifecycle listeners, in user code.