1 and 2 are good reasons. 3 is not really valid i think. we could build something that redirects but keeps parameters intact.

other reasons to me: 
*  have language specific urls for translated blog posts. (with the slug route this would be impossible or some weird hack that ends up re-doing what the routing does)
* have each blog post be a RouteAware object that you can create a route for without even needing to know it is a blog post, its just "something" that we can get a route for.