JSF URLs are not used the same way as most other webapp frameworks use them. They are more like session handles than absolute resource locators, which is why a postback operation doesn't return with the new page's direct-access URL in the browser toolbar.
The mechanism works just fine as long as you realize that a direct URL and a 'session handle' URL are not the same thing and you don't set up brute-force hyperlinks and expect that they'll contain the JSF session information (which is NOT the same thing as HttpSession!). A Session handle only works when submitted via POST, not GET, since the postback includes the JSF session information as part of the POST data stream.
You can forcibly update the displayed URL in the toolbar using the <redirect/> navigation option, but there is extra overhead when you do that.
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.