Yep, its almost certainly caused by floating point precision errors. The farther from 0 a value gets, the less precise a float gets. I think the step size between float values increases exponentially as you get further and further away from zero.
With your airplane model, what ends up happening is that the calculated vertex positions hit on a value which is between the ranges of a float, so the float just truncates the value? (or it might round?). ie, 9.00000000001 would fall between the value 9.0 and 9.0000000000234, and just become 9.0. The visual effect is that the airplane model verticies get mushed together and the end result is something that looks like a bad low-poly version of the plane.
What's the fix?
A) try to keep your floating point values near 0 because the step values are very close
B) use doubles to get more precision on higher numbers (Though you're just kicking the problem farther down the road)
Techniques & options:
A) keep the camera at 0 (as mentioned above) and move the world around the camera, easiest solution with least complexity
B) At certain fixed distances from 0, translate everything in the world to recenter on zero (ie, at 10k, shift everything by 10k to get back to 0). This can get tricky and cause bugs.
C) Just use smaller worlds in your design
D) Scale the world down