Нет разницы в том, что делают эти две инструкции, просто в том, как они кодируются. Это не отличается от того, как XOR EAX, EAX и XOR RAX, RAX делают то же самое, но первый на один байт короче. (XOR RAX, RAX также имеет недостаток, заключающийся в том, что он не нарушает зависимости от Silvermont, но это различие не относится к MOVZX.)
Даже до x86-64 существовали различные способы кодирования, которые по сути были одной и той же инструкцией (например, SUB EAX, EAX), автоматическое c обнуление верхней части регистров просто добавляет больше.