ummm.... personally I'd go for a motion path. You would have to adjust the speed of the coaster (so it's faster going down slopes, slows at tops of hills, and so on), but it would allow for the best control, I think.
Actually, you'd probably want to go for a pair of them, one on each track. Then put a locator for each set of wheels, and point constrain the cars to the locators (so, most cars would probably have four locators). This would actually make the cars bank and otherwise 'ride' the tracks correctly.... (I think...).
As for creating curves that mimic the rails, you have several options. If they're polys, you should be able to snap curve points to the vertices during creation. If they're nurb surfaces, I think you could probably extract an isoparm or something like that (which might save you time).
Anyways, I think that's probably your best bet. Mind, you're going to also have to mess with offsets a little for things, and probably the best option for animating the wheels would be a script which tracks its locator's posistion along the curve, but those are relatively minor and easy. Probably the biggest obstacle would be getting the motion paths, actually...