Using a Unit object and Drivers.
Have used similar to drive midi notes along a music staff. The issue with using this method is making the object both follow and switch paths.
A quick run down of the test setup illustrated.
Added the default bezier curve, arrayed it 5 count in $Y$ using constant offset.
Added an icosphere (at global origin default) and given it a follow path constraint targeting the bezier. Set to fixed position, ie offset is 0 at one end, 1 at the other.
Added a driver on offset, to traverse single curve every 24 frames
(frame // 24) % 1
Note since this goes from 0 to 1 its inverse
(1 - value) could be used as scale driver for any or all of the scale factors.
Added a driver on $y$ location to skip to the next arrayed curve. $0.3777$ is the constant array modifier $y$ offset, and 5 its count.
0.3777 * ((frame // 24) % 5)
Since the modifier values are blender properties, could use them in the modifier instead
Normally to follow the path, and point in the direction of it can set the Follow Curve property to true. This however blows up here if set. Instead have added an empty that simply follows the unmodified base curve. A basic Rotation -> Rotation Transform constraint is used to set the rotation of our unit. (Using swing and twist input rotation)
Introducing our own props.
Using custom properties as driver variables.
Add a property to the scene to globally offset.
Add a property to the object to locally offset.
self in drivers lets introduce object properties into the question.
y * ((frame // 24 + self.get("prop", 3)) % count)