As Joe pointed out, the reset() method only zeros the accumulator as you can see in this code from the Gyro class:
Code:
public void reset() {
if (m_analog != null) {
m_analog.resetAccumulator();
}
}
I'm not sure why it isn't resetting immediately unless, as was suggested, there is some delay in the hardware. I'd also suggest to try adding a delay after doing the reset to see if it makes a difference.
Let us know if that helps.