Array / fit curve modifier doesn't produce a long enough array to fit entire curve
If you make a default cube, and a default circle, the default cube is 2 units wide and the default circle has a circumference of 2pi (2 * radius * pi).  How do you evenly array something 2 units wide into something 6.28... units longs?  You can't.  2 doesn't go into 2pi evenly.  So Blender makes 4 of the cubes.  (Differences in yours may be due to unapplied scale, but it doesn't matter; you're not going to get any array to fit any curve exactly.)
As for things failing to follow the curve after its end-- there is no curve after the end.  If you want it to continue to curve, create more curve.  Which you can do by entering edit on your curve, selecting a control, and 'e' to extrude it.
Now, you might find it useful to enable &quot;stretch&quot; and &quot;bounds clamp&quot; on your curves, in properties/object data/shape.  If you do this, any curve modifiers you use will stretch the modified mesh to fit the curve-- so those 4 cubes, 8 units long, 2 units each, will turn into 4 cubes, 6.28... units long, pi/2 units long each.