La réponse se trouve dans la spécification de XHTML 1.0 sur le site du W3C.

Il y est expliqué : Use both the lang and xml:lang attributes when specifying the language of an element. The value of the xml:lang attribute takes precedence.

Il faut donc utiliser les 2 en même temps, mais xml:lang est pris en compte en priorité.
L'explication vient du fait que XHTML est à la fois du HTML et du XML, or HTML propose l'attribut SGML lang pour spécifier la langue, et le XML propose xml:lang. Certains navigateurs ne lisent pas le XHTML de façon native, il faut donc spécifier l'attribut lang pour que le document soit quand même bien interprété.