When designing the SpiroBot, we had to choose which types of motors to use. Some of the more popular motor assemblies include DC motors, servos, and steppers.
DC motors are the most basic, but spin at extremely high speeds. Because of this, they often require complex gearing systems to bring the speed down. Since we didn't want to mess with too many gears, we ruled DC motors out.
Stepper motors are rather difficult to drive. Unlike simple DC motors, steppers require a motor controller to power several magnetic coils in a specific order to move. However, steppers offer extremely high accuracy and substantial torque. Because of this, we chose to use a stepper to drive the pen holding mechanism. In order to make a stepper more straightforward to run, we also chose to use a motor shield as the motor controller to make the code simpler.
Servos are extremely easy to control, especially when you have a motor shield and additional libraries in the Arduino code. Because of this, we are using a 180-degree servo to control the vertical motion of the pen. We also initially chose to use a continuous servo on the bottom of the machine to rotate our platform. However, we found that the accuracy of this motor varied wildly, causing uneven spacing in patterns drawn and making repeating patterns nearly impossible, even with the same code. We are now in the process of changing the bottom platform-rotating motor to a (hopefully) more accurate stepper. The function of moving the pen, however, does not require extremely high accuracy, so we are continuing to use a servo for that.
For more information on motor selection, take a look at Adafruit's Motor Selection Guide.