Использование JSON в полезной нагрузке пакетов - исключительно
"application specific", это ваш личный выбор/не-выбор. Можете не
использовать, ничто вас не обязывает. MQTT стандарт ничего не знает
о JSON. Отвечая на вопрос, почему все-таки многие стремятся к тому
чтобы в качестве полезной нагрузки использовать JSON? Потому что
эти люди при разработке применяют на "уровне приложения" языки
Python, JavaScript и другие со встроенной библиотечной поддержкой
Web (Go, Ruby, C#, Java, Kotlin, PHP) и соответственно, встроенной поддержкой запаковки/распаковки данных в/из JSON. Для многих молодых разработчиков эти языки близки, потому что они их изучали в университете или на веб-курсах. К тому же, когда payload пакетов текстовый, содержимое легко читается в WireShark, то есть легко отлаживать. Это основные причины, других неявных особых причин нет.