Motion controllers have several potential benefits. How much these are worth will vary from one user to the next, depending on his needs, and the characteristics of this machine.
1) Increased speed - the PC is limited to a 100kHz step rate, and relatively few PCs will work even at this speed. A more practical limit for most PCs is probably 45kHz. If you have a machine with a high steps/inch (my machine runs 20,000steps/inch on 3 axes, and 96,000 steps/inch on the fourth), then a motion controller will likely give you faster rapids.
2) Smoother motion - Motion controllers generate the step pulses in hardware, which results in a smoother, near jitter-free pulse train than is possible with the software pulse generation when using the Parallel port. On my machine, this made a noticeable difference.
3) Reduced loading on the PC - Motion controllers move the bulk of the motion control logic to the external device, significantly off-loading the PC. This can enable, for instance, using a relatively low-power PC, or a laptop, and the machine controller. I ran my machine for a long time with a 588MHz PC, and it worked just fine.
4) Expanded I/O - many, perhaps most, motion controllers have greatly expanded I/O capability. For example, the KFlop I now use provides something like 50-60 I/Os, all programmable as inputs or outputs, and the number of I/Os can be greatly expanded by adding additional boards. The PC parallel port solution is limited to two ports, and about 30 pins, and the split between inputs and outputs is fixed, and not changeable. A complex machine will invariably run out of either inputs or outputs, and you then have to expand using a completely different technology, like ModBus, PLCs, etc.
5) Some motion controllers are capable of doing things that would be simple impractical any other way. For example, my pendant is connected directly to the KFlop, so I don't need a PC at all to operate the machine through the pendant. I can also connect the Gecko ERR/RES signals from all my G320s to the KFlop to monitor and control servo errors, and stop the G-code program if a servo fault occurs. It can also do true closed-loop control of stepper motors, and halt the program if a stepper loses position.
Regards,
Ray L.