1. Students are under a ton of stress, have very little time to do work and have very high standards for themselves. 2. Guidelines are not clear defined or communicated as to what is and isn't cheating. There's a ton of grey area. 3. It is incredibly easy to cheat and get away with it.
I doubt there is a single person that wasn't guilty of it in one shape or form. For most, it was just things like working with other people on problem sets (which for some courses is considered cheating), not "serious cheating". But still, when "cheating" is this rampant, the university needs to reconsider its policy.
Personally, I liked a grad CS professor I had. On the first day, he spend 20 minutes talking about this. He very clearly defined what was and wasn't cheating, when we were and weren't able to collaborate, and the consequences (guaranteed F in the course, for even minor transgressions, and possible expulsion from the university). It was a very strict policy. He even told us that the answers for all of our labs and homeworks were available online if we looked, and even looking up the website was tantamount to cheating. If anything seemed like a grey area, we were required to get written permission from a TA or him to do. Draconian? Perhaps a bit. But I liked that it was very black and white, and frankly I don't know a single person that even considered cheating in the course.