As has been said, you would need an encoder on the spindle - I haven't put it to full use yet, but put a pair of Hall-effect sensors* to read tooth position from one of the 70-tooth** gears on my lathe spindle in quadrature (e.g. one lined up with the centre of a tooth, one with an edge) which allows electronics to get 4 x the tooth-count and also the direction of rotation. I was putting one in for the spindle tacho, thought "why not, while I'm in here? Future development..." This will give me 280 positions / rev, I hope that'll be enough if I ever obtain the Tuits...
The stepper / servo should have an encoder, the risk of missed steps from a stepper is either a bad thread or a broken tool-tip... A third sensor on each encoder would help, used as an index mark to get absolute rather than relative position (e.g. the stepper would rotate faster/slower until the angular position matches the spindle BEFORE commencing a threading pass) so they always start with the same angular relationship, as you'd get with a single-tooth clutch.
It would be good to micro-step the leadscrew (intermediate positions between the e.g. 200 steps), it's possible to get e.g. 16 intermediate positions for much smoother motion, at the loss of some torque, by incrementally varying the winding currents (even the Chinese 10-Local-Currency-Unit stepper drivers do this).
There's an open-source "electronic leadscrew" you can probably google up, which uses common logic ICs and vintage-looking thumb-wheel switches, and I'm pretty sure there are Arduino versions, the maths to make one work are pretty simple! It might be worth searching YouTube for "Holbrook CNC", Andy Pugh (a fellow on the Holbrook group) did a full conversion and it may give you a good start on stepper / servo requirements?
EDIT: I had a quick look at Mach, LinuxCNC and how they do it - Mach only uses the "index" pulse once/revolution when threading, so an encoder-based solution would beat that... LinuxCNC allows any count/rev, and uses it properly
Hope this helps, rather than confuses!
Dave H. (the other one)
* Allegro ATS667 - tiny, built-in magnet, give a TTL-compatible output. 3 wires: ground, +v supply, output plus one to leave disconnected (the "test" pin)
** Had to hack the tacho board by swapping the timing crystal for one 7/6ths the frequency because of the unusual tooth-count - if it had been a 60-tooth I could have stayed with the original and read frequency from the sensor, read out RPM when set to measure frequency...