downsides:
* interoperability (what's being discussed on this thread)
* you can't query relays for json in the content
* it's probably unnecessary when you don't try to shoehorn data structures into nostr events without thinking about how nostr works to model your data
when I first started developing nostr stuff I had the inclination of putting everything structured into a json, the more I think about it, the more I think this is generally unnecessary (not saying that it would never be the case)
ultimately you can just do the same thing but put the json payload in a tag, like zaps do, and keep client interoperability with unknown-kinds working