for gravel it’s noisy enough that you could probably get away with a world aligned texture if you want.
and/or, if you add a spline mesh based on distance along the spline rather than based on points that can help too.
See this post for that
you need to use a higher poly mesh for it to bend and keep the width constant.
there is a spline road example in the learn tab and there was a livestream on how it was built.
you can use decals for puddles, pothole, manhole covers.
alternatively you could use static meshes, and no spline or spline mesh.
you could make each piece modular and create them in a bp using hierarchical static mesh component.