Si envía los datos por cURL, es lo mismo, va a ser un request y se va a evaluar que los datos sean correctos según las reglas que tengas definidas en el form.
Cita: Otro de los temas que me preocupan es la portabilidad y mantenimiento. Si quiero modificar cómo entran los datos a la base de datos, que filtros quiero poner o cambiar a otro framework, ¿no sería más útil validar los datos de entrada en el modelo?
Todo depende de lo que estés haciendo, no es lo mismo validar ordenes de compra con transferencia bancaria a validar si un email existe en la bbdd, para lo que estas mostrando a mi me daria igual donde validar, pero no en todos los casos es lo mismo, si en tu caso es mejor validar en el modelo o en varias capas, pues hazlo así, que te lo impide ?, no hay un "es mejor así", hay varias formas de resolverlo y deberías utilizar la que mas te sirva.