Because it's a message.
Messages can be blocked, so if your plugin isn't the first in the list, the other plugins might block it and the hook won't trigger.
As for events, as far as I understood, they're some kind of post-messages and cannot be blocked(someone correct me if I'm wrong).