It is because doing the calculations on the server does not scale well, so no one wants to do it, usually what happens is that all the clients have to run the simulation anyway so the devs make sure it is the same simulation and all the server does is ship what are effectively the keypresses around. this is why desyncs are such a problem.
Note that having the server do the calculation can solve some of the cheating problem, I remember a modified quake server that would not send location information if you could not see the player, which made wallhacks not work. I just got totally nerd sniped by the memory and while I can't find the demonstration video that impressed me so much at the time. I did find that it was darkplaces quake that added the option "sv_cullentities_trace" which prevents wallhacks.
www.icculus.org/twilight/darkplaces/readme.html#ServerFeatures