Cycles uses a pinhole camera (when depth of field is turned off) and uses the distance between a given point and the pinhole as its Z depth.
There is no explicitly modeled lens distortion, it happens implicitly. Imagine, what kind of surface would you need so that each point of that surface has the same distance from the pinhole? A sphere, centered around the camera. Any other surface, such as a square, will have non-uniform Z-depth.
The source code for camera ray generation is in kernel_camera.h camera_sample_perspective()