La razón por la que generalmente están desacoplados es porque desea que su vista use un controlador para llegar a su modelo. Pero la arquitectura debería permitirle reemplazar una vista con otra sin tener que cambiar la lógica de negocios (es decir, el modelo de objeto o cómo se recuperan esos objetos).
Al no vincular su controlador directamente a la vista, más adelante sería mucho más fácil agregar otra funcionalidad como importar / exportar que puede usar el controlador / modelo directamente sin tener que depender de ninguna interfaz de usuario.
Otra ventaja de sacar la mayor cantidad de código posible de la interfaz de usuario es porque las interfaces de usuario son mucho más difíciles de probar en la unidad que la capa empresarial detrás de ellas. Al separar todo lo que pueda de la vista, puede escribir muchas más pruebas unitarias para asegurarse de que su controlador / modelo y la lógica de la aplicación sean correctos.