Geometry nodes vs particle system
The big deal with geometry nodes is that we're effectively getting the functionality of geometry shaders now. That's kind of a blunt way of putting it, but if you look that up in the context of GLSL you'll find that they stand between vertex shaders and post processing, and govern full primitives; that is, they can create meshes in the graphics pipeline itself, without having to copy data over for every single instance.
GLSL geometry shaders are largely superseded by compute shaders now, but it's still a common practice to use them for extremely primitive-populated models and the concept is the same. In the past we did indeed use particle systems for this, but a particle is much more simplistic and restricted than geometry nodes, particularly if you aren't trying to work in real-time. They are much more flexible and easier to work procedurally with. (Think Cinema 4D, if you've used it; it's had this advantage for a while now.)
If you attempt to model the same scene with both geometry nodes and particle systems, you'll already notice, as I did, that geometry nodes are substantially easier on your hardware. On top of this, we are opened to node programming for geometry nodes, while particle systems require what I consider to be a much clunkier interface.
Now, if you have something you've already implemented as a particle system, and it works, that's fine; they aren't going anywhere and you shouldn't feel like you have to replace it just yet. Technically they are two different systems that involve instancing; but for geometry nodes it's a core concern whereas with particles it was always more of a tacked-on option.