Das Umschreiben in der Addressleiste kann man auch machen https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history
Das nervt oft, wenn der zurück-Button nicht wirklich zurückführt.
Wenn man mit pushState URLs in die History einfügt, sollte man natürlich auch auf popstate hören, um bei der Vor- und Zurücknavigation den Status wieder herzustellen, der zu der aktuellen URL passt.
Eine umfangreichere Implementierung ist History.js. Backbone.History funktioniert ähnlich.
Grüße,
Mathias