I don't think we can comment about geometry kernels specifically, but I can comment in broad strokes.
Protobuf has the downsides you mentioned (complexity, build-time steps, etc),and in exchange you get higher performance serde, highly-matching-semantics in bindings consistent interpretation of data (JSON for all its simplicity is mostly just a grammar and not semantic spec, it has plenty of edge cases that different standard library parsers will silently interpret differently).
Using simple JSON is a perfectly sensible choice for a very large number of usecases: the context where Protobuf really shines is in larger distributed systems that evolve over long horizons. You write the schema once, you know your servers will be able to interpret it.
Comparing performance is actually not so straightforward, but more relevantly the serde costs are often not at all relevant cost in overall systems... until the day that it is. If one microservice starts getting too costly you know you can rewrite it to C++ in-place with confidence. And with predictable semantics when people are adding and removing fields without doing atomic updates to the readers and writers of the data.
Use in file formats is something of a nonprimary usecase for Protobuf: in that context it makes sense if you want a convenient binary format under super long term parsability, but a hand-targeted bespoke binary format will always be able to be more efficient, and so if maximum efficiency is truly of utmost importance probably then likely nether Protobuf or JSON are the best fits for file encoding.