This is great Tim, thanks for finding the time to go into depth with this!
I always push the texture streaming pool up to 4096 and above but it has never fixed this issue after it happened, which is why I never looked much into texture streaming. Disabling the texture streaming entirely seems to make things look normal again but like you mentioned crashes occur regularly due to low memory. As soon as I reduce all 2048 lightmaps and rebuild it fixes it though.
To get around the issue we’ve broken up all our walls etc. into small meshes and given them lightmaps below 2048. Instead of one 2048 wall we now have more than 10 wall meshes each at 512-1024. I would think this would cause the same (if not more) strain on memory, but the issue has never occurred and we get nice shadows. Are 2048 lightmaps really that much more of a strain? It seems like the engine struggles (and usually fails) to process maps of this size, but lots of maps of a smaller size are fine. Either way, it’s strange things get sort of stuck in this ugly mode even after increasing texture streaming pool size.
We’re currently testing this on a PC with 64GB of memory running a GTX 980 (4GB of memory) if that helps at all.
Also, I can’t seem to find the LightmapStreamingFactor console command referenced anywhere, I just typed it into the console with ‘1’ at the end and that didn’t seem to do anything.