I haven't noticed it on here, but the browser only automatically scrolls you down when going back once, after the page has loaded. So if you're loading content asynchronously, and the page ready event fires before your async content has loaded and the page is not long enough to scroll all the way to the previous scroll position, it will only scroll to the bottom of the page as it exists when that event fires.
So you could server render the whole thing to circumvent the problem, or store the scroll position in sessionStorage and scroll the page manually after all your content loads.