Roads are tricky. They have to match the terrain; they have to bank, curve, swerve and whatnot. I have three ideas for roads, and no idea is trivial to implement. All my ideas output a road mesh with a rectangular cross section, so there will be no gaps between the road and the underlying terrain. The road will actually be a rectangular "tube" with only the top of the tube showing above the terrain.
First up is procedural generation of roads. For this scheme, I would first generate the terrain heightmap. Then, the roads could be generated by following contours, making random changes in direction, or making random jumps to different contours. In the end, the procedural algorithm would output a list of waypoints for the road, and a mesh could be generated from the waypoints.
Second is direct creation of the road mesh. I would have to make a modeling tool for the road, and extrude road segments from the end of the road. Perhaps Bezier curves and control points could be used to manipulate curves in the road (both vertical and horizontal).
My last idea is a combination of the last two. I could paint the road waypoints on top of a 2D texture, and then have an algorithm calculate the appropriate height of the road at each point. The algorithm would need the heightmap as an input to calculate the road height.
That's all for now, more ideas soon.