As permute points out, Gray code is only needed to compare pointers in different clock domains.
One important thing with Gray code is that there must be a register after the binary-to-Gray conversion.
Without the register, there can be glitches and activity on several bits before the output is stable,
which means that the Gray coding is meaningless.