Setting directives aside, controllers are often placed somewhere in the middle of a view to manipulate specific pieces of HTML with state or behavior. This can be done at any level, even at the highest level. The relationship between the view and controller is closely connected.
Why would you want to assign a controller at the route level as well? I have always found this concept puzzling. What is the underlying philosophy behind it? What benefits does assigning a controller outside of the view offer compared to placing it at the top of the view itself? It doesn't seem to be for swapping out controllers for different implementations; that is not a common practice.
/edit: Is it possible that assigning a controller at the route level is necessary for manual resolution that requires injection of dependencies? (Refer to John Papa's example)