Netcode and tickrate may be the cause, but good players with high pings definitely have an advantage in BF. In most other FPS's it's the total opposite because lower pings have a huge advantage.
And I have tested the "advantage" on European and Russian servers in BF3, and it is in fact there. People would complain and I usually got banned for wiping the floor with them. I found "the sweet spot" was to have a ping around 100-150ms higher than the average local player. In other words if the average was 50ms then I wanted to be 150-200ms. I began to have trouble again when my pings were over 250ms, and 300+ to me was unplayable.
IMO, 120ms is the max ping any server should allow if they want to keep things fairly even for everyone. One good idea Ive seen: servers that allow anyone to join to get the server going, then begin to kick the high pingers as the server fills up.