S'il est vrai que Sizzle est un moteur qui fonctionne de droite à gauche (ce qui correspond à la manière dont le CSS est interprété), il n'est pas vrai que le sélecteur spécifique de votre exemple sélectionnerait tous les éléments d'ancrage de la page, puis filtrerait leurs parents pour qu'ils correspondent à l'id de "foo". Sizzle optimise en fait tout sélecteur qui commence par un ID et l'utilise comme contexte pour l'ensemble de la sélection, plutôt que d'utiliser le document. En d'autres termes, le sélecteur que vous avez choisi se traduit essentiellement par :
document.getElementById("foo").getElementsByTagName("a")
Vraiment, ce n'est pas un mauvais sélecteur du tout.
Toutefois, compte tenu des autres opérations que jQuery doit effectuer (notamment le bouclage des éléments pour les fusionner dans l'instance jQuery), jQuery("#foo").find("a") sera toujours le plus rapide car jQuery met en œuvre un raccourci de création d'objet jQuery pour les sélecteurs id-only, puis effectue la recherche à partir de #foo.
En d'autres termes, Sizzle lui-même n'est pas très différent lorsqu'il fait Sizzle("#foo a")
y Sizzle("a", document.getElementById("foo"))
mais jQuery("#foo").find...
sera plus rapide grâce au raccourci ID propre à jQuery.
À propos, mes remarques sur Sizzle supposent que querySelectorAll n'est pas utilisé. Si c'est le cas, Sizzle le transmet simplement à qsa, ce qui n'est toujours pas aussi rapide que d'utiliser le raccourci ID de jQuery.