Why do I need PWMs on Arduino but not on ATMega16 or PIC16 to drive the stepper motors with L293d?
Firstly, when driving the motor you need one PWM signal for speed and either one or two signals for the direction ( if you don't want braking you can use an external logic inverter and save one control output ). So a chip with 6 hardware PWM and 12 digital outputs (6 with inverters) can control speed and direction on 6 individual motors. 

Secondly, it is fairly easy to create PWM signals in software at the frequencies required for small dc motors, so if you want further PWM outputs you can do so. A 328 based arduino has 20 pins which can be used as digital outputs, so could control ten motors with a couple of hex logic inverters.