You want to have at least 20% free on your hard drive. Otherwise you will have the potential for major file fragmentation that will result in low performance and the problem you describe above.
Specifically, I'm pretty sure the problem is the fragmentation. When you have only 1 or 2% (or 10%) space free on a drive, the maximum *contiguous* space on the drive could only be, say, 400K in size. Then if you download or rip a 30MB file, it will need to store parts of it in around 8-10 different places. Then, to read it back, the drive needs to jump from place to place, and when this happens you can have buffering problems. This problem also compounds itself when *other* files on your hard drive are fragmented. It results in lousy IO performance.