A ver, recibir el HTML directamente no tendría por qué estar mal, si solamente quisieras tener una página que recibe info por ajax y la muestra en la web. Pero lo cierto es que tu sistema será muy rígido.
Recibir JSON te permite separar las responsabilidades de tu código mucho mejor, de modo que, cuando haya cambios, tengan que repercutirse en el código por menos lugares.
Si tienes HTML como respuesta de un ajax tienes quizás menos complejidad del lado del cliente, pero realmente la complejidad de producir el HTML la vas a tener que colocar en algún sitio.
Las principales desventajas a mi modo de ver son:
Acoplando la tecnología de visualización a la web
Tu código estará vinculado única y exclusivamente a una página web. Si más adelante tienes una app para móvil, toda la programación del servidor no la podrás reutilizar. En cambio, si usas JSON, los datos que te devuelve el servidor los podrás usar desde cualquier sistema donde los necesites, porque todos podrán procesar ese JSON y producir la salida que la aplicación necesite, web o app, por ejemplo.
Dicho de otra manera, el código del servidor lo estás acoplando a una tecnología de visualización concreta. Estás provocando que la separación entre backend y fronten se diluya. Esto posiblemente no sea un problema como digo en un código de una aplicación que aspira simplemente a funcionar como un sitio web, pero te corta las alas para hacer cosas más complejas.
Ocupando más procesamiento en el backend y desaprovechando la potencia de los clientes
Luego, tienes otra desventaja y es que en tu backend estás ocupando tiempo de procesamiento para construir un HTML, cuando ese esfuerzo lo puedes derivar a tus clientes, es decir, los navegadores que consultan la página, por lo que el servidor se tiene que preocupar de cosas menos complejas. Podrás luego usar los sistemas de componentes de interfaz gráfica del lado del cliente para producir la vista que sea necesaria con los datos que se han recibido.
Definiendo el diseño en un lugar innecesario
Si el backend te devuelve el HTML es muy probable que estés colocando decisiones de diseño en el lado del servidor. Si mañana quieres cambiar el diseño de tu web de manera muy radical, posiblemente tengas que cambiar tu código tanto en el backend como en el servidor, lo que te va a dar bastante más travajo a la larga. Es verdad que el aspecto lo vamos a poder definir con CSS, pero muchas veces el HTML también lo tienes cambiar cuando quieras cambiar el diseño.
Sin embargo, si mandas un JSON estarás pudienod decidir el aspecto que tendrá tu salida únicamente en el lado del cliente.
Adaptarse al framework de moda
Si tienes un JSON puedes apdaptarte al framework que necesites en cada momneto. Si mañana te piden que en lugar de React uses Web Components, te servirá el mismo código del backend que habías escrito.