A control output from a micro-controller or PC does not have the required power to drive a motor, so you must employ a motor controller to bridge the gap between the low current control input and the high current motor. At the simplest implementation you could use a relay to switch on the motor, however modern motor controllers offer a wide array of features that set them apart from a relay.
Advanced DC motor controllers offer bi-directional control, Pulse Width Modulation, overcurrent and overheat protection along with regenerative braking for efficiency. Servo controllers offer the ability to control a servos position, velocity and acceleration, using the servos built in encoders, highly useful for robotics and automation systems where you do not want to use separate encoders. Stepper motors allow position control without having to use an encoder, this open-loop control method is useful for applications where position control is desired, but without the complexity of closed-loop feedback control.