Sequence - S1, S2,.. Sn - The track can be thought of these 8 sequences of vertices (4 are shown above). Each sequence originates from the corners of the flat 2D surface above

Lets call this Track-Generator, hmmm.. let's see.. GUS ( I'm sure AlterVik would have given it a better name... eviiiiiiiil).

Gus needs an Array of Vector3, which is the list of Points described above. GUS generates the track along these points. This means that when GUS gets hungry, you create a spline (line) in your fav 3D editor and export the points and feed it to GUS.

How GUS works -
First of all GUS assumes this is not a loop (To loop, GUS expects you to mutate it and create GEORGE, GEORGE LOOGUS). Secondly, GUS expects at least 2 points. Anyway...

2. Gus knows there are 8 Sequences of vertices in track as calls it "S"[ S = 8]

3. Gus then identifies number of vertices required as 18 + (n-1) x 8
[ 16 for 1st block, +8 for each after ]

Now GUS loops S=8 times (for each Sequence required) -
For this Sequence
GUS finds out offset [width (w) and height (h)] of the sequence from the center
For each Block
GUS finds out in which direction the track is moving [ P(n+1) - P(n)]
GUS finds out Left Direction from this [ See Note at the end ]
GUS adds point [ P + Left * w + Up * h]

Now it's time for GUS to identify the Triangles...
GUS knows there are n x 16 Tris, hence n x 16 x 3 points to define all the Tris.

That's it. I haven't explained the complete workflow as given in 1st fig, you can refer the code below and this is in no way optimized and bug free... so basically WTF License.

Notes:
1. While calculating the direction in which the Track is being generated, GUS assumes that the Road is not banked. Reason being, GUS only has a line as direction, there can be infinite "Up" vectors. Hence, GUS assumes "Up" to be global "Up" axis. Based on this, GUS does Cross-product of "Up" and "Forward" to get "Left".

To have banking, points given to GUS should also have associated Left or Up direction data. In short, GUS should be mutated into BOGUS - to calculate direction based on BOth these data.

2. GUS no like UV mapping for now.

Code
Save this link.
Add the script to a game object and set the width and height parameters.

If it helped you in some way, leave a comment so that I know someone out there is actually reading all this x_X

In the past, we also had a look at Urban Pad, a City generator, which is now discontinued. However, the founder of the company is looking into reviving it. The tool generated a mesh outside of Unity, including buildings and streets. We made a simple demo with programmer art to try it out:http://www.youtube.com/watch?v=9uADKP0Bd9w