I understand the science, but I have directly argued with tripwire about this. The reason is simple, bullet ballistics are compared serverside. This means you have to lead for bullet travel time + ping. (note that if you shoot a wall really close, you will hear a double sound from the gun firing and then the bullet hitting the wall when it should be near instantaneous. Try this on a 500 ping server, the lag is half a second)
I myself prefer the more common calculation of ballistics clientside, which means you hit a guy, he runs for (ping)milliseconds and then the hit gets calculated. The downside to this is you may think you took cover when on someone elses screen they got you, and you go down "unfairly".