I'd guess that delays are mainly the cause of signal problems, or in-tunnel things.
The trains always seem to stop between stations for no reason... the driver doesn't let people know why they've stopped - so it's even more frustrating. Sometimes it's because the driver is getting a red light, although you KNOW there isn't a train directly ahead because you waited 10 minutes for one when you boarded... and sometimes they let a train pass them by going in the other direction.
It's pretty dumb to blame customers for delays... if the subway is busy it's obviously going to take more time to load and unload.
Since someone brought up streetcars... it's the drivers that cause bunching up.
I live near the end of the 506 line, near Main Station, and half the mornings I take the streetcar to work I wait 10 minutes (not fun in weather like today) and then 3 streetcars come all at once - you can NOT blame this on automobile traffic (as there is not very much at this time in this part of the city), or on loading times (as hardly anyone is on the streetcars) - it's because all 3 drivers left Main Station all at once... instead of leaving on time, regularly spaced out.
I sound completely bitchy in the above paragraph, but it's crap service like that that makes me happy I bike to work most of the time. I'm never happy giving the TTC money when I see problems like that caused by laziness and the drivers not caring about the people who pay their salaries.