I suspect that the vast majority of YouTube buffering failures are caused by Flash. Oftentimes if you fast-forward (drag the slider) past the buffering point, the movie will continue playing fine. That shouldn't even be possible if the problem was that the movie hadn't downloaded.
The problems are caused by Youtube's extremely heavy throttling and also the rules that Youtube sets on client side buffering, not Flash. Flash allows rather significant customization of buffer behavior; I've equally seen cases where Flash was used for streaming with total latency below 200ms.
At one point early on after the throttling was introduced, it was so badly done that normal videos would buffer all the time because the amount of bandwidth they allocated to the throttler was less than the bitrate of the actual videos.