I saw a great presentation the other day where it was said that if you’re dealing with persistent data, you should handle in the route. If you’re dealing with temporary data, you should handle it in the controller. The rationale is that you have a lot more visibility into other controllers/routes at the route level.
The biggest benefit (that I see) to using setupController is that it fires every time you access the route. The state of stuff declared directly in the controller persists between requests.
I’m still pretty new at this so I’m open to corrections, but that’s how I’ve been treating the route/controller relationship.