I've been giving it some thought and here's my reasoning of why this stuff happens.
It looks like there are two parts to hits. One part is the actual hit-box hit, and another part is the animation of the hit. We all know that hit detection happens on the server itself, but from the looks of it, the animation is dependent on the individual's computers.
Consider this: When your enemy is strafing, there are delays in the information that is being relayed to you. This means that the troop is really in front of where he appears in your screen. Lets say that DICE put the hit-boxes directly on the troops. You would NEVER be able to hit a moving target since you'd have no idea where the troop really is at any given time. It would all depend on ping and how fast he is moving.
So what do coders do, they place the hit-box behind the troop. In an ideal world, this would mean that on your screen, both hit-box and troop display fall directly on-top of each other. However computer code is not perfect and so inaccuracies happen that cause all of the phenomena we see in BF2. It'd be possible to write code to match many instances such as reversing directions, both troops strafing together, etc, but there is a huge trade off (lots of time, minor improvements in hit-detection) that might be a bit prohibitive for the company.
Now, that takes care of the hit box. But what about the puffs of smoke? Well I'm guessing that these animations happen client-side, not server-side. There's one major reason I think this and its' because these animations happen instantly. You can tell there is a tiny, millisecond delay between when you shoot, and when you get the crosshairs hit flash or the kill, so this is obviously info being sent from the server. But the puff of smoke happens instantly so it has to come from your computer. So if you aim directly at the troop's on screen, you see a puff of smoke because your computer recognizes that as a hit, but according to the server, you missed the hit box. This is very speculative of me, but it kinda makes sense.
So yes, to us it seems like the hit-boxes are just fucked up, but there is a reason that hit-boxes are placed behind the enemy in games like this. This lets us play games like this where there are 60ms delays that would ruin game play for us since we'd never be able to hit shit. Of course this causes certain situations like the ones we have become used to seeing,but hopefully code will advance to make hit detection an accurate science.