So, at first there were two textures rendered: bg and fg. bg is a rendering target, which is rendered to when the screen is switched, but then not touched afterwards. fg is a streaming texture, which is updated more continuously. overlay was later added as a rendering target so mods can draw stuff in front of fg without affecting fg itself. The pause screen also uses overlay, and it's the only thing in the core game to do so, which I'm not a fan of.
fg was made as a streaming texture for efficiency reasons, but in retrospect this was dumb. I can't forsee any negative performance impact from switching fg to a rendering target. Especially because currently all functions that draw to textures need to be implemented twice, once for rendering targets and once for fg. The Lua API hides this, treating all textures equally, but the duplication is still there. The codebase could be drastically simplified by changing this.
Maybe bg/fg should be merged as well? I like overlay being separate (though the pause screen probably shouldn't use it), but I don't see as much value in keeping bg/fg separate if they're both represented and interacted with the same way.