I like the kind ID. Since it is just json instead of e.g. uint16 its a bit counter intuitive. But you need to look up a ID instead of just inventing your own tag (or worst of all: namespaced tags) for your protocol. This has a huge impact on how new kinds are discovered.
Devs invent their own kind IDs even if they are not on a NIP. One day, they are bound to clash when testing different custom events. Like there is a kind ID directory in the NIPs repo, there could very well be a named kind directory for common kinds.