Current page's scroll position is lost when transferring sessionState from one view to another. This is because we only update the current WebBackForwardListItem after navigating away.
However, when the client swaps WebViews for navigating, we don't detect this as navigating away and the current WebBackForwardListItem is not updated with the current page's state (including the scroll position). This means that the information is not transferred via the sessionState and the scroll position (among other things) ends up being lost when navigating back in the new WebView.
Created attachment 256186 [details]
Attachment 256186 [details] did not pass style-queue:
ERROR: Source/WebKit2/WebProcess/WebPage/WebPage.cpp:300: More than one command on the same line in if [whitespace/parens] 
Total errors found: 1 in 5 files
If any of these errors are false positives, please file a bug against check-webkit-style.
Comment on attachment 256186 [details]
Clearing flags on attachment: 256186
Committed r186304: <http://trac.webkit.org/changeset/186304>
All reviewed patches have been landed. Closing bug.