You don’t need to expose anything as previous and current position is already there (but you can if you want).
You can use the default spawn over distance or create custom one .
The amount of your particles might be related to the position of particles, they are not interpolated by default, see here.
My point there was, it is easier to manager separate instances and also to enforce better sorting by default this way.
In your case those smokes are probably transparent quads, so if you spawn them from single system, then any other transparent objects might be rendered incorrectly, for example this black AA smoke in the picture might be just next to the camera, but because system is rendered as single batch, then it will look like it’s behind those trails.
On the other hand those trails are long, so they might cross each other anyway, and the same thing might happen, but you could sort them all by camera distance if single system spawned them.
To be honest I am not sure what is the good solution for different Z-overlaping particles, perhaps someone else has good idea about this.