Looping Animations with Curve Modifier
This looks like an issue with keyframe registration handles / extrapolation.  By default, Blender uses Bezier handles with constant extrapolation to ease in and out of animations.  This is usually what you want.  But not for simple loops like this.

There are two solutions.  One is to change the handles.  Switch to the graph editor, move to your initial frame, ctrl-k select all this frame, jump to final frame, ctrl-k select all this frame.  'v' change handles -> vector.

Alternatively, change the extrapolation mode.  Switch to the graph editor, select your channel (probably X location here), shift-e extrapolation mode -> linear.

As for finding the exact start of the curve, there are a number of plugins that can give you curve length, including the popular Animation Nodes plugin.  This curve length could then be used as the translation of the object.  But at this speed, it should be safe to eyeball it.  What I would do is plop a cursor on one corner of the object on the initial frame, just as a visual marker, and without changing my view, jump to the final frame.  Then I would advance my object along the proper axis until the appropriate corner was located at my cursor.