Thank you for the added info!
Could you point me to how one would go about replaying/examining the api trace file you've posted there? Some preliminary poking around with apitrace didn't produce any results. I'm not sure if .zst is an archive that needs to be extracted somehow, or...?
That aside - hmm. I've looked at all the occurrences of glBlendFunc in the game (all 390 of them, sigh) and - aside from one errant and unnecessary call when drawing the hyperspace storm terrain - they all appear to be outside glBegin()/glEnd() calls. It's possible I've missed something, or that there's an unexpected combination of method calls that somehow leads to this, but at least I'm not seeing anything obviously wrong.
I also looked at, more specifically, the "showing dialog" transition; everything there seems to be in the right order; that is, the things it's doing in addition to the "regular" things do not have glBlendFunc() inside glBegin()/glEnd() calls. Which, I mean, the previous check of all glBlendFunc calls in the game would cover, but, just paying more careful attention here. Rendering stuff with a partial transparency also seems like it'd be unlikely to change the order of calls here...
The game also doesn't call glGetError() directly. AFAIK it's called from LWJGL's Display.update() method, but it's hard to see how that could ever end up inside glBegin()/glEnd() without causing major problems, and also how it might be related to the dialog transition.
So, yeah, if I can see more detail about the glBlendFunc call that somehow ends up inside glBegin/End, that would be very helpful! The glGetError call being there, though, it's hard to imagine how that could happen at all.
(Edit: just want to say that I really appreciate you taking the time to deep-dive this issue.)