It is important to remember that Call of Duty has never been promoted as being a realistic representation of armed combat. With the campaign they have always looked at providing a cinematic experience along the lines of a summer action blockbuster. It is a piece of entertainment and like many forms of entertainment, particularly action movies, real world physics are often forsaken for the sake of creating an exciting set-piece. This mentality translates into multiplayer where the focus is on fast-paced, high octane action, rather than accurately reflecting real-world armed combat.
There is a broad spectrum of play styles across the community that the developers are trying to cater for. They want as many people as possible to be able to play the game the way they want to play it. There’s the campers, rushers, tacticians, knifers, pistoleers, assault shielders, traditional snipers, quickscopers, trickshotters, as well as those who use variable combinations of these styles. With the magnitude of players that they are trying to cater to, it is absolutely impossible that every single customer is going to be 100% happy with every aspect of the experience.
Lag and latency is something that everyone who has played P2P based multiplayer has experienced and it sucks for whomever is on the bad end of it. Doing ping tests on servers that are designed for doing ping tests (and with a pc) is unfortunately not going to give a truly accurate indication of how your connection will perform you have a host Xbox pinging between 11 random Xboxes.
There is a very good alternative to Call of Duty for those who would prefer a slightly more realistic experience from multiplayer; Battlefield 3. If you feel so strongly about the inaccuracy of weapon handling you might find this would be a more worthwhile purchase for your niece. You could probably pick it up quite cheap now too.