I see you are using a blender version <2.80 but if you think this method can save you some time, you can always do it in a newer version and export the mesh in an earlier version.
We will use the "Weld" modifier introduced in blender 2.82 and its new "Vertex group" option. Basically the weld modifier will merge the vertices under a certain threshold distance. We will use a vertex group only in the outer area of your road, which has more sparse geometry, because else the main part of your road will vanish.
So basically, add a vertex group and set the value to 1 in the outer part, which bends atrociously when the curve turns. Set the central part to 0.
Add a weld modifier after your other modifiers, set the vertex group to the one you created. Tweak the distance and set the duplicate limit to 0. The weld threshold has a soft limit to 1 but you can enter a higher value.
This is not the prettiest mesh, but a big part of the job is done and it is non-destructive.
Edit : I noticed that this doesn't work for U-turns. I propose a slightly different method but the results are a bit mixed. We will mask the faces which are overlapping on the road.
- Add a plane, make it follow the curve with an array and curve modifier. Hide it.
- Back to your road, add a new vertex group. Name it "Mask".
Between the "curve" modifier and the "weld" modifier, add a "Vertex Weight Proximity" and a "Mask" modifier.
Set your new modifiers like so (don't forget to invert the vertex group in the mask modifier with the double sided arrow on the right of the field :
The result will have a few artifacts but it is much more usable than before :
To try to correct the uvs, add a "UVProject" modifier in the end of your modifier stack, and set it to your UV map, and use your curve or your arrayed plane to project :
I assumed you used different materials for the road and its exterior but you may have a visible seam there... I don't know much more about this.
Note : the "vertex group" option did not work in my 2.82 version although the field is here, I had to use a 2.83 beta version, if it was a bug it was fixed by the team inbetween.