The downside of using the history location is that it requires some additional work on the backend so that refreshing your application doesn’t throw a 404. And as andosan noted before, your app won’t work for users with IE9 and below
And if you are hosting your Ember application on S3 then hash seems like the best option. There are some ‘work arounds’ that high jack the error pages and try to serve up index, I’m not a big fan of that approach.
It’s purely a question of your preferences and deployment needs.
hash works everywhere, and it doesn’t depend on any server support. If you’re deploying to static hosting like Github pages or S3, it’s a good choice.
history makes your URLs look like “real” URLs with no #, but it requires setup on the server and some old browser’s can’t deal with it.
auto will use history in browsers that support it and hash in ones that don’t. This also requires server-side support, just like history.
none will leave the URL alone. It’s not a good idea in a normal Ember app, but it could be useful if you’re embedding an Ember app inside a larger existing site, and it’s useful in testing.