When discussing lag, bear in mind there's several kinds and they effect people differently.
Graphical lag is the "nicest" - your client just can't draw stuff fast enough. This can be improved by shorter rendering distances, less fancy options, etc. Mods with fancy models can be but are not necessarily a prime suspect here. But the game simulation logic is unaffected.
CPU lag is the next most obvious. Though you can be CPU bound during render, I am going to use this to mean the game's simulation thread. This is where server tick rate comes into play. The game must be able to handle the entire loaded world(s) in under 50ms. If it can't, things start working oddly.
Then there's network lag. You can do whatever you want in your mod block, but odds are at some point you will need to tell players about it. This usually comes in the form of block updates, which cause the server to resend all data about a block to the client. If too many blocks in a chunk get queued for update, the entire chunk is resent (I do not recall the threshold offhand, but it's not that high). Players with poor network connections will teleport around and witness other weird behavior.
RP2 is primarily network lag. It sends an incredible amount of updates to clients and does it constantly. It may be CPU efficient algorithm-wise, but block updates are actually fairly bad for players.
Network lag can come from other sources, too: GUIs need to update data while open, some mods like MPS need to transmit state around, and sometimes there's things like that bugged version of a somewhat popular mod (that I won't name because it was fixed) that just sent 2mb/s for no real reason.
Finally, lighting updates are bad. Because in MC lighting has gameplay effects, it has to actually be calculated and synced. Flickering lights can be surprisingly bad for performance of a server.