This probably wasn't very noticeable while it was used solely in DECORATE, but now in use cases like this it's very apparent that the same particle size given to SpawnParticle() results in twice as larger particle in OpenGL than it is in Software.

While this can be circumvented by GetCVar("vid_renderer"), this check is VERY unreliable since vid_renderer can be set before restarting, and isn't even a valid CVar in ZDoom and as such you can set it to anything and get the most random results in mods that rely on it.
Would be nice to have some consistency in SpawnParticle implementation instead.

Still happens as of current git build gzdoom-x64-g2.2pre-2024-g0e2d9af.

No idea right now. But I rather suspect a problem in the software renderer due to the floating point changes. Particles were among the affected things and it may just be that the scaling still isn't right. The particle size code in GZDoom hasn't changed for a long time.