Addons get the necessary information. They can distinguish top level navigation from frames. And they could easily impose rules that keep google on the same container when needed.
That's the point of having an addon API instead of fixed behavior, to implement logic around such complications.
It's actually quite a difficult problem for the browsers themselves and they have all the information that's available. There have been a lot of issues with showing the new URL while the old page is still in the browser, for instance.
Having special cases for every exception doesn't scale. What about Outlook Web Access using Microsoft accounts or domain accounts? Are you going to build an add on for every webmail installation?
Also if you start a new context every time you navigate you can't for instance log into Google.