JSON é utilizado pra comunicação na web, quando menos coisa no buffer melhor. Eu odiaria receber um JSON de 200kb sendo 150kb só porcaria que seria descartada no parse.
Mas se o JSON for usado como arquivo de configuração, aí a o esquema é diferente. Mas comentários ainda não faz falta, de você não entende o JSON ou você é burro ou o Dev que escreveu é ruim.
Existem alternativas, pode usar yaml ou xml também, não tem problema.
Mas muito bom você ter explicado, eu realmente sinto falta de suporte pra binário no JSON, transmitir mídia via JSON é um grande desafio, você precisa fazer todo um processamento pra transformar em string e fazer o envio. Depois outro processamento pra fazer o parse. Isso acaba usando muito processador e memória RAM desnecessário, já que tudo entra no buffer, ter problemas de desempenho é quase certo.
No front end por exemplo, você precisa utilizar técnicas de paginação e lazy loading se quiser receber mídia da API, se não você mata a máquina do usuário. Agora se você receber o arquivo binário, entra no buffer só uma vez.
Não entendeu? observe:
Back: img.png --> buffer--> String --> buffer --> http
Front: JSON --> buffer --> Parse --> buffer --> img.parse --> buffer --> img.png --> render
E a RAM?