CNC controllers, in most cases, control rotary motion and the model of how this rotary motion is tranformed, by the mechanism attached to the motor, to a translational motion is implemented in the controller.
You can use any method of transforming rotary motion to a linear motion as long as the model for it is pre-implemented in the CNC controller or you can implement it to the CNC. Moreover, it does not even has to be a decoupled translational motion. E.g. LinuxCNC can controll multiple axes to achive 1 decoupled linear motion. On a parellel mechanism, moving all axes results in a Z translation. Video of this here.
The only limit to what mechanism can you put on the end of the motor of a CNC is what are you able to model and integrate to the CNC controller. If you do not have the possibility to implement a model, then the question becomes what pre-implemented models are there and how can you adjust their parameters to make them refelct your mechanism.
Needles to say the accuracy of the model will affect the accuracy of the CNC.