If you connect the stepper to a L297D driver and that one to a L297 stepper coder, all you need from the microcontroller is one pin to provide steps and one pin for direction. The normal resolution of a stepper is 200 steps per 360 degrees. So send a pulse to the stepper, take a sensor reading, send another pulse... The speed will be dictated by the sensor reading time. The stepper will be energised even when it doesn't move, so it will hold the position. You may want to have a homeing touch sensor for initialisation.
So the downsides are:
- more pins from the the microcontroller: 2 for the stepper and 1 for the homeing microswitch,
- more parts on the board: 2 IC (with their capacitors of course), one microswitch.