Thanks for the interesting question. Attached is a possible solution that uses expressions to animate the segments moving into position based on their position along the spline. Here's the node tree:
In this example you keyframe the Counter value to create the animation. The Animation Distance numeric node sets the starting point for the segments on the Z Axis, and Time Offset allows you to control the pause before the next segment starts to animate.
To achieve this I've had to use a couple of expressions that find the segment's position along the spline (measured as a scalar value 0 -1) and multiply this by the offset to create the time delay.
Then in a second arithmetic operator there is an If statement to test to see if the current Counter value is greater than the value set by the time delay. If it returns true the the Animation distance is multiplied by 1 minus the amount the counter is greater than the time delay to create the animation! If the result is false it simply returns the Animation distance.
The second expression looks like this: if(Input1 > Input3, max(0,(1-(Input1-Input3))*Input2), Input2)
Where Input 1 is the Counter, Input 2 is the Distance, and Input 3 is the time delay. Note too the Max()
expression which prevents the segment's z value from going below 0, locking it to the spline.
I hope that helps, initially expressions can be tricky if you're new to them, but by examining with the attached file hopefully it'll all make sense. If you need further clarification on this or have any further questions please let me know.