Il motivo per cui sono generalmente disaccoppiati è perché vuoi che la tua vista utilizzi un controller per arrivare al tuo modello. Ma l'architettura dovrebbe consentire di sostituire una vista con un'altra senza dover modificare la logica aziendale (ad esempio il modello di oggetti o il modo in cui questi oggetti vengono recuperati).
Non legando il controller direttamente alla vista, in seguito mi sarebbe molto più facile aggiungere altre funzionalità come import / export che possono utilizzare direttamente il controller / modello senza dover fare affidamento su alcuna interfaccia utente.
Un altro vantaggio di spingere il maggior numero possibile di codice dall'interfaccia utente è dato dal fatto che le interfacce utente sono molto più difficili da testare unitamente al livello aziendale dietro di esse. Separando il più possibile la vista, è possibile scrivere molti più test unitari per garantire che il controller / modello e la logica dell'applicazione siano corretti.