creo que depende mucho de lo que manejas con tu modelo...
si la validación la haces dentro de el, entonces tiende a ser restringida hasta cierto punto... si manejas la validación fuera, no tendrás problemas con la flexibilidad en el modelo...
en otros escenarios es claramente mejor validar en el propio modelo, pero no sin antes despejar otro tipo de incógnitas que pudieran relacionar al modelo bajo otras circunstancias...
al final tienes bastante razón en lo de repetir código, pero te coloco un escenario simple: backend v.s. frontend
si usas exactamente el mismo modelo, con validaciones incluidas, puedes encontrarte con problemas a la hora de crear algún registro, modificarlo, etc...
algunas veces el frontend cuenta con formularios mas simplificados, que tienden a ser reforzados gracias a la lógica de los controladores, en el backend no siempre pasa este problema, pues la forma en que administramos la información no siempre será igualmente introducida...