Hmm, I’m just an animator who knows Unity’s PlayMaker visual scripting. I know absolutely nothing about network games and how it works. I didn’t learn coding from anyone, I just figure out things by myself, as I go, so it’s not a professional advice 
As I understand, if you are making a multiplayer game (let’s say, just 2 players), you need to create 2 instances of the same character on both machines. On both machines, both instances need to be in the same place and have the same rotation. When I move my character 1m forward and rotate him 90 degrees, my computer sends it’s position and rotation to the other computer, every frame. The other computer gets those vectors, and moves the other instance of my character, so both instances are synchronized. It also has to work the other way, because the second player could push my character on his side, and the instance on my computer should move like the instance on his computer. Now, the animations need to react to changing the position and rotation of the characters. For example, if my character translates 1m forward, the anim blueprint should play a corresponing animation, basing on rotation, movement direction and speed of the character. So, in conclusion, the position and rotation values should steer the animations.
Now, the definition of root motion is pretty much “animations steer the position and rotation of the character”, so it’s totally opposite! That’s why root motion is not quite suitable for online multiplayer games.
If you play Battlefield or Call of Duty, or even Bulletstorm and examine how the characters move, you can see that they move totally different in single player and different in multiplayer. In single player, all the AIs are using Root Motion, because it’s pretty, smooth and natural looking. It all works on just 1 machine, so the computer knows exactly where everybody is, even if they are steered by animations. Now, in multiplayer - every character uses the same animations, but in in-place versions. They are the same anims, but feet slide, they jump funny, sometimes do really strange things, because the position and rotation is steered by code, not by animations.
There are root motion and in-place animations in my sets, so you can use either this or that or mix them. If you were making something like single-player campaign and multiplayer mode, I suggest to do same thing call of duty does. Root motion for single player and in-place in multi.
P.S. Remember that in game dev, there’s never “it can’t be done, period”. I bet you could use root motion in online, but you would need to transfer a lot of data. In in-place animations, you just need to send position and rotation to the other instance of the character. In root motion, you would need to send the names of the animations that play right now and fine tweak the position and rotation of the character, on top of root motion. Lot of work, but I bet it can be done. But would it be worth it? Sending lot’s of data, thet produces lag, so the fast paced online shooter would have less feet sliding…? I’m not sure.