As for the "hide problems in the future", I actually think the exact opposite. Right now, we use the document's outer_window in same way, except it's completely broken and can access invalid memory if the outer window happens to die, which would be very hard to debug (especially considering most apps using mshtml are bloated and slow with millions of frameworks).
Yes, it would be nice to fix that. One fix for that is to simply reset the pointer to NULL. My understanding is that the actual reason we can't do that is iframe navigation test and we already know that the test works because on native, the document interface doesn't change. So what you do is essentially working around that problem, not fixing it.