тут все зависит от контекста.
С точки зрения клиент-серверной архитектуры это правильно, так как позволяет нам полностью отделить клиент и сервер. Клиент ничего не будет знать о реализации сервера, сервер ничего не знает о клиенте. Для SPA само то.
С токи зрения классических web-сайтов, где все сначала рэндрится на сервере, есть два варианта:
- если данные с сервера нам нужны что бы обновить маленькую штуку какую, которая уж больно зависит от текущего состояния страницы, то есть это часть логики представления на клиенте, то лучше json а на клиенте уже сделать что нужно. Так мы упростим логику на сервере.
- Если мы просто должны что-то подгрузить и нам важна производительность на клиенте, то тогда имеет смысл отдавать отрендренный HTML. Шматок html грузится не сильно дольше шматка json, и в целом, за счет отсуствия рендринга на клиенте мы можем даже сэкономить. Так скажем twitter делал (а может до сих пор делает). Но опять же это усложняет поддержку сервера так что тут надо смотреть, усложняет ли, сильно ли и т.д.