Internet Bottlenecks
What is ping?
One main component that causes lag is "ping," or network latency. In many games you can measure your "ping" to the server as a definite number. A lot of people know that decent ping is anything under 300, good ping is anything under 120 or so, and excellent ping is 50 or less. But what do these numbers mean? Basically, these numbers are a measurement of how long it takes to send information from your computer to the server and back again, in milliseconds.
Consequences of Ping
So if my ping reads as 35, it means that it takes only 35 milliseconds (.035 seconds) for information to make the roundtrip from my computer to the game server and back again. Let's say I have a friend named Fred who plays on a modem and gets a ping of 350 milliseconds (.350 seconds). That means it takes 10 times as long for information to get from Fred's computer to the server and back as it does for my computer to do the same thing. The upshot of this is that in a given period of time, my computer is receiving up to 10x as much information from the server as Fred's computer is getting.
Ping is not absolute across games
If the game has good network code (Quake 2), Fred may still not see very much choppiness because of built in client side prediction. Client side prediction means that your computer (the client) can interpolate the "gaps" in the datastream and compensate for it graphically, alleviating the choppiness. Quake 3 is an example of a game with advanced network code which should help with choppiness for modem players.
Now if the game you're playing has bad network code (South Park), then Fred is going to have to deal with tons of jerky gameplay. Basically this means that ping is not an absolute value that can be compared across different games. A ping of 350ms may be playable in one game (Quake 2 or Tribes) but an absolute hinderance for another (NetQuake, Unreal). One thing to remember is that no matter how good the network code is that at some point, it becomes impossible for the computer to predict movement, and having a really bad ping (> 400ms) is always going to result in laggy, choppy gameplay.