Hola.
El ejemplo del libro no es la única solución posible. Hay infinitas soluciones viables al mísmo problema.
La XOR sirve en este caso para comparar si ambos valores son iguales. La única manera que STATUS,Z se ponga en alto luego de una XOR es si el resultado de la mísma es cero, y para que eso suceda, ambos valores sometidos a la operación lógica XOR deben ser idénticos (puedes verificarlo si lo deseas). Entonces, la XOR lo único que está haciendo aquí es comparar, por eso lo que sirve en este caso, es sólo el bit STATUS,Z que contiene luego de la XOR el resultado (si ambos valores coinciden o no), es por ello que el valor resultante de la XOR (almacenado en W) se descarta, porque no se utiliza en este caso. Sólo sirve el flag STATUS,Z.
Es una operación bastante recurrente en el código ASM. También podrías utilizar SUBLW, etc. para realizar la comparación.
Saludos.