Let's just look at the XOR of the low order bit (LOB) to keep things simple. Let x be the missing integer.
Each integer in the list contributes a 1 or a zero the LOB of R1 (LOB(R1)).
Each integer in the range contributes a 1 or a zero to the LOB(R2).
Now suppose LOB(R1) == LOB(R2). Since R2 == R2 XOR x, this can only happen if LOB(x) == 0 == LOB(R1) XOR LOB(R2). (1 xor 1 = 0, 0 xor 0 = 0)
Or suppose (LOB(R1) == LOB(R2). This can only happen if LOB(x) == 1 == LOB(R1) XOR LOB(R2) (1 xor 0 = 1, 0 xor 1 = 1).
But what works for the low order bit works for all of them, because XOR is computed independently, bit by bit.