Por poner un ejemplo: Un Carrito de Compras
1. En una vista hay una lista de productos donde el usuario puede seleccionar algunos para "Comprar"
2. Al presionar un Botón "Comprar", la vista pasa los datos de los productos seleccionados al controlador que procesa el evento o acción "Comprar"
3. El controlador hace los llamados respectivos al modelo (Inventario, Productos, Carrito, etc...) donde se efectúa el proceso de "Compra" y se afectan los datos
4. Una vez finalizado el proceso de compra el controlador actualiza la vista o invoca una nueva.
Creo que aquí es donde se encuentra la duda. El controlador no debería (generalmente) pasarle datos a la vista ya que eso implicaría que este supiera en que formato se van a presentar los datos.
Si la vista es HTML entonces tendría que pasarle los datos en formato HTML pero si después se necesita presentar la misma información en un reporte PDF, entonces, ¿debería hacerse otro controlador?
Como tu (Vera) lo tienes, haría pensar en que tu controlador es especializado en enviar los datos a la vista en un mismo formato. Lo cual pues no es que esta mal, y si de todas formas te sirve y no quieres complicarte podrías dejar así.
La ventaja de hacer que cada capa haga su trabajo respectivo es que puedas agregar funcionalidad extra a tu aplicación sin tener que modificar nada y mas bien agregando (como Bloques Lego).
5. La vista muestra el carrito de compras obteniendo los datos desde el Modelo pero aplicando el formato (HTML) para su presentación.