En tant que natif, on ne se pose même pas la question, mais une fois qu'on s'aperçoit de cette bizarerie, ça titille un peu la curiosité, je suppose.
L'explication est toute bête : la place du COD par rapport au datif est régie par deux règles à appliquer successivement :
1/ hierarchie de la personne : on mettra toujours le pronom qui reprend la "plus petite personne" en premier (rien à voir avec les hobbits ou autres créatures
2/ si la personne est la même, il faut placer le COD avant le datif (il la lui donne).
C'est simple, mais pour l'extraire seule, cette règle, faudrait vraiment chercher.
