The main advantage of using an external motion controller is that runs all the function in a real-time environment. So many functions, like homing, reading an encoder, threading, probing, etc., are tied to the exact time in which they occur.
It is very important to make a distinction here, this is not the case for the cheap motion controllers found on the internet, and this is the main reason they are not good. The interpreter is supposed to delegate all the functions to the motion controller running in real-time, but they are not. for example, the probing signal can be processed on the PC, which is not connected to the exact instance in which it occurred, as the signal was sent back via serial communication.
When running a CNC with a parallel port, it is not really running in real-time, it is that they trick the Windows Kernel to process the pulses fast enough and with a priority, so you do not miss the pulses. That is why the pulse stream is not clean when you look at it with an o-scope.
When using an external motion controller, the load of generating the pulse steam is taken away from the PC, which just concentrated on interpreting the g-code, planning the trajectory, and on communicating with the external motion controller. The PC should be just cable enough to run this and not be affected by other activities from the operating system. A Solid-State Drive is a good thing to have, as macros are read from the disk. A good graphics card is also good, as it is used by the trajectory planner.