Penso che la corrispondenza della password appartenga all'interfaccia client e non dovrebbe mai arrivare al server (il livello DB è già troppo). È meglio per l'esperienza dell'utente non avere un roundtrip del server solo per dire all'utente che 2 stringhe sono diverse.
Per quanto riguarda il controller sottile, il modello grasso... tutti questi proiettili d'argento là fuori dovrebbero essere sparati all'originatore. Nessuna soluzione è buona in ogni situazione. Pensa a ognuno di loro nel proprio contesto.
Portare qui l'idea del modello grasso ti fa utilizzare una funzione (convalida dello schema) per uno scopo completamente diverso (corrispondenza delle password) e rende la tua app dipendente dalla tecnologia che stai utilizzando ora. Un giorno vorrai cambiare tecnologia e otterrai qualcosa senza alcuna convalida dello schema ... e poi dovrai ricordare che parte della funzionalità della tua app si basava su quello. E dovrai spostarlo di nuovo sul lato client o sul controller.