El propósito del patrón MVC es ofrecer una clara separación de tareas. La vista maneja la presentación, el controlador maneja los eventos y el modelo proporciona la lógica de negocios. (Me doy cuenta de que muchos frameworks web no siguen exactamente el patrón MVC. Django, por ejemplo, se llama MVT (o algo así)).
Por lo tanto, dado que los encabezados HTTP son un detalle de presentación, deben ir a la vista. Una aplicación MVC bien escrita le permitiría tener vistas no basadas en la web (como una versión de escritorio) usando el mismo controlador y modelo. Poner los encabezados en el controlador rompería esta clara separación.