Over the past few years, we've wrestled with GPU memory management quite a bit. In the end we realized that a simple memory policy works best for most cases. The situation we have today is that the renderers are given a (rather high) budget to use for tile textures. While tile textures do get recycled, as long as we're under the budget no attempt is made to free textures that are no longer in use. The reasoning goes that if the page at some point needed these resources to draw, there's a good chance that it will do so again and we don't want to incur frequent allocation and de-allocation overheads. When a tab is backgrounded or closed, textures will be freed, as you've noticed.
This could in theory be a problem if there are lots of concurrently open browser windows that all had high memory needs at some point. On the other hand, at least on Windows, our experience has been that the drivers do a reasonably good job at paging graphics memory based on use so high allocations don't appear to be an issue. It's also less of a problem on Android where there's only one tab active at a time.
Vangelis