Filing this under the either the I Can\'t Believe No One Noticed This Before or the I Must Be Missing Something categories:
It appears that if you do a simple
Here's what I found:
When the pushed location contains a hash symbol, the adressbar will be updated. So this will work:
window.history.pushState(data, title, 'a/new/url#');
But the window.location object will not be updated so you need to save the pushed url into a variable and use that instead of window.location if you need the pushed location.
Tested on Safari for Android.