Je vais peut-être me faire piquer par celui-ci mais je pense que c'est une préférence personnelle. Je ne trouve aucune référence dans la doc sur le fait que each() soit différent de keys() ou values() (autre que la réponse évidente "ils retournent des choses différentes". En fait, la documentation indique qu'ils utilisent le même itérateur et qu'ils renvoient tous des valeurs de liste réelles plutôt que des copies de celles-ci, et que modifier le hachage tout en itérant sur celui-ci en utilisant n'importe quel appel est mauvais.
Cela dit, j'utilise presque toujours keys() car, pour moi, il est généralement plus explicite d'accéder à la valeur de la clé via le hachage lui-même. J'utilise occasionnellement values() lorsque la valeur est une référence à une grande structure et que la clé du hachage était déjà stockée dans la structure, auquel cas la clé est redondante et je n'en ai pas besoin. Je pense que j'ai utilisé values() 2 fois en 10 ans de programmation Perl et c'était probablement le mauvais choix les deux fois =)