The important point is that controllers can be proxies. This means that when you say {{#each user in controller}}, the controller proxies to it’s model property. That’s why you get the exact same result as {{#each user in model}}
{{#each User}} generally does not make sense. {{#each user in users}} only makes sense when the controller has a users property, which won’t happen automatically just because you use e.g. an App.User model.
I would add that if you have some sortProperties defined on the controller, then {{each controller}} would show a sorted result, whereas {{each model}} won’t be sorted.