@pycoder is right. You have different rotations on the curve and text object.
To double check the rotations, check Axis under Display in the Object context in the Properties area.
Select all objects, then Alt click on the Axis checkbox, to change the property of all objects at once.
The axis will be displayed in the 3D viewport. Notice, how the lower curve is oriented different than all other objects.
The Bottom curve has (0, 0, 0) rotations (image above), but all other curves have different rotations.
If we zero out the rotations (Alt + R), the behaviour of the Text On Curve is now obvious.
Step by step solution
Since we can't apply the rotation of the text. We will have to recreate the curve with the text's orientation.
- Duplicate the curve.
- Select the text, Shift select the curve, then press Ctrl + Shift + R and select Copy Rotation. We now added a copy rotation constraint to the duplicate curve. They have the same orientation.
- Select the duplicated oriented curve and make its visual transform real. (Ctrl + A > Visual Transform)
- Remove the constraint.
- Delete the (wrong) vertices of the correctly oriented duplicate curve.
- Select the curve, Shift select the duplicate curve and join them (Ctrl + J).
- Apply the text on curve property.