The co-op netcode and competitive netcode is different. In co-op is it really just the hosts Xbox controlling AI and all? In competitive host is just acting as a server for other players.
I don't know why the lag is different in co-op and competitive though.
All the AI is client-side in Campaign and Firefight. Only buttons are networked (to overly simplify it). In competitive, most things are controlled by the host, with some client side prediction to smooth things out.
Example:
Firefight: Press L to throw grenade. Other boxes recieved your button press. Their acknowledgment is sent back and the game advances to the next frames where the grenade actually throws. The animation is not allowed to advance until the next inputs are networked, hence "lockstep".
Competitive: Press L to throw grenade. Your box plays the grenade throw animation immediately, and asks the host box "I wish to create a grenade at X,Y,Z in this direction". Host checks your grenade count, goes "Okay, you have enough grenades. I'm now creating a grenade on your box at X,Y,Z with this direction" and your box spawns a thrown grenade (and the host creates one in his own simulation)
The time span between your grenade animation playing and the host creating the grenade on your Xbox usually happens so fast that it looks like one action.
BONUS MATERIAL: This is why sprees are lost when the host leaves. The host is the one that actually tracks your sprees and awards you the medals. It sees you get enough kills in a row for a Killing Frenzy, it'll go "Okay XboxClient1, play the Killing Frenzy event". Host leaves, everyone's kill count resets.