When games have lag, you're going to get inaccuracies between what individual players can see, because they cannot be kept in synch with the split-second differences between what they all can see and are doing.
There are two ways of addressing this problem:
1) To keep the game fair, you can assume that the server is always correct. When you take a shot, it is sent to the server, and it works out if you hit the target or not. If the server has the target in a different position to you - then even if you 'hit' the enemy on your screen, it is still registered as a miss - UT3 does this. You can also get noticable delay when shooting in UT3, as it doesn't fire the trace until you get the feedback, which makes it even more unresponsive.
2) To keep the game fair, you could alternatively assume that what the player sees is correct. In this case the trace is calculated on that player's machine and the server is told if a target is hit or not. The problem with this is, that if another player sees themselves in a different position (such as behind cover or around a corner), then they can still be hit due to the original player's machine saying that they have been. This is what ping compensation does.