It depends how you handle the PWM.
Assuming you are using Python, the native GPIO module's GPIO.PWM() function is software PWM. Anyone who's ever scoped a GPIO.PWM signal or even set the frequency to within the audio range and listened to it on a speaker, will be aware how rough the result is, as other threads vary the CPU load and thus the latency of the PWM thread. Basically, it sucks and any motor you control with it will twitch worse than a hyperactive kid on a sugar and caffeine high!
Personally I've moved away from using the native GPIO module and switched to using the pigpio library, which is much much better at generating low-jitter PWM (and other waveforms) as it uses hardware timer interrupts.
http://abyz.me.uk/rpi/pigpio/python.htmlIf you are using C and don't want to have to delve into the depths of the Linux kernal, priority levels and BCM283x register level programming, then the pigpio library is still (IMHO) the best bet.