That can be done using Animation Nodes.
The principle is to make a duplicate instance of an object for each particle.
This base object is associated to a curve modifier.
The tricky thing is that you can not place the duplicates at the particle position, because this will not fit with the modifier (we need to follow the curve axis specified on the modifier, but stay constant on the other axis).
So, we keep the particle position for the modifier axis only (here Z) and for the other axis (here X, Y) we take a constant random position.
Last part: we want a vector of random fixed positions for each particle but the particle life cycle varies. So we consider all particles from the beginning and hide the died one at the end.
- 1: Get the particle system considering alive and died
- 2: Instantiate a copy of the base object for each of them
- 3: Take random positions for X and Y but keep the particle Z
- 4: Get the dead particles amount
- 5: Place the objects
- 6: Hide the dead