I think it’s just something that a lot of people tend to gravitate towards. Tons of particles? - who doesn’t want that, right?
Well, in practice you don’t really need to run your simulation on the GPU, I found. If you have less that, say, 100,000 particles being simulated at a time - it’s not a huge deal to simulate them on the CPU.
My engine uses a mix of CPU and GPU for the simulation, sorting and physics are done on the CPU and parameter interpolation is done on the GPU from an encoded parameter texture.
For a real game you will probably want to have tens of different particle emitters in your scene at any given time, and only with a handful of particles each. Most of the emitters in my game have around 30-100 particles at any given time, that’s super low, but it’s not because the engine can’t handle more, it’s because that’s all that’s needed. I’m sure that doesn’t fit every use-case, but I do believe that it covers majority of common use-cases.