The curve has same amount of edge loops between control points in the U direction of the curve (the setting you can set in the shape panel). UV space maps linearly to this, and changing this functionality would be hard if not impossible. Usually it's the desired functionality, preventing the textures sliding around if the curve is animated among other things.
You can however work around it by using two curves, one of which is just a straight line and holds the materials, textures, and resolution and bevel settings used for rendering. This curve then uses a curve modifier to copy the shape from another curve, which is used for just defining the shape of the final object. That way the rendered curve has uniform distribution of edge loops.