There is no need to create other curves or make the curve longer, no need for Python or drivers etc. I guess the way you are using it might be wrong.
First of all, to have the cube follow on the curve, it has to be cleared from any location transformation - so press Alt+G to set it back onto the world's center.
Now to place it behind the other cube, change the Offset value in the Follow Path constraint to a positive value. You don't have to make the curve longer, the cube will just be moved straight in the elongated direction of the curve. Here are three cubes on a curve, one with offset 0, the next offset 15 and the third has an offset of 30:

So you might wonder why the offset is a positive value to move out of the curve and why moving along the curve needs negative values to get to the end. Also it doesn't seem as if the values 15 or 30 represent any distance in Blender units which the cubes are offset.
The reason is the following: if you now select the curve and look into the Curve Properties, there you will find the Path Animation options. By default the settings are Frames = 100 and Evaluation Frame = 0.000 which means, and object needs 100 Frames to travel from start to end of the curve. And the Evaluation Time at 0 means, you are now at the starting point. And there is the cube with Offset = 0.

To see what the offset now actually means, I change the Evaluation Time value at first to 100. As it was to be expected, the first cube is now at the end point (I've enabled X-ray mode to see through):

But if I now set the Evaluation Time to 115, the second cube is at the end point of the curve - this the offset 15 that is set in the constraint. The third cube will then reach the endpoint at 130 because of its offset 30:

How far the distance of a cube with offset along the curve is depends on two values: the Offset in the Follow Path constraint and the Frames value in the Path Animation settings of the curve.
For example, if I change Frames from 100 to 20, the three cubes are much further apart from each other although I didn't change the Offset values in the constraint:

The reason is, since they only need an Evaluation Time of 20 to get from start to end, they need to be much further away to keep the time offset of 15 and 30. So with Frames = 20, at Evaluation Time = 20 the first cube with no offset reaches the endpoint:

And like before, the second cube reaches the end at Evaluation Time + Offset, that's 20 + 15 = 35, and the third at 20 + 30 = 50:

This means, to move the cubes along the curve you can use Path Animation in the Curve Properties. By animating the Evaluation Time you move them along the curve simultaneously, keeping the distance that's given by the offset value. If you want them to move at different speeds you can additionally animate the Offset values in the constraints.
Animating the Evaluation Time however is a bit tricky. It gets animated when you click on Animate Path in the constraint settings. In this moment, it gets an F-curve Modifier which uses the Frames setting to determine the linear movement.
If Frames is set to 100, this means that the animation will start at frame 1 and at frame 1 + 100 = 101 it will reach Evaluation Time = 100, the end point of the curve. Of course you can modify this later on, but it isn't as obvious as standard keyframe animation at first.
Here's for some examples. You might not be so flexible with the F-curve Modifier as with keyframes, but you can do some fancy stuff as well. First the basics, the initial animation that is created gives a linear movement using this formula:
$$y=a\cdot x^1+\text{ coefficient}$$
with $a$ being the value you enter in the $x^1$ field, which is the multiplier for the frame number $x$ and of course the coefficient which is entered in the according field. The resulting $y$ is the Evaluation Time.

This standard linear motion looks like this:

If the linear motion is too boring, you can for example set the Order in the F-curve Modifier to 2. Now you can have a quadratic equation for the motion, in my example I used this formula:
$$y=0.01^2-0.01$$

This results in a slowly speeding up motion:

If you want to be more crazy, you can also animate the influence of the constraint on the cubes. I've done this for the third one in this example. It starts with a constraint influence of 0, which let's the cube sit in the world center. With increasing influence, it starts to move towards the curve.

Yes described earlier, the cube has to be in the world's center to make sure it sits on the curve instead of moving some away from it.
But what if you don't want the cube to start from the center? You can use a Copy Location constraint and have it attached to some empty for example. Then you keyframe the influence on this constraint. At first with an influence of 1, the cube stays in the same location as the empty. With a decreasing influence it moves back towards the center. If you now increase the influence of the Follow Path constraint, it moves from the empty back onto the curve. This can look like this:

//EDIT: As you've explained in the comments, your cubes sit at locations off the center initially and you need to get them onto the curve. Instead of having cubes in the world's center and letting them start from empties at different locations, you can do it the other way around. The good thing is, you only need one empty for all cubes since they all have to end up in the world's center.
In this example, there is an empty at (0,0,0) while two cubes have original locations off the center, one at (-10,-10,0), the other at (5,-8,0). Both have a Copy Location constraint targeting the empty and start with an Influence of 0, slowly increasing to 1 which pushes them into the world's center and therefore onto the curve:
