When you are in the interrupt, no other interrupts can happen.
If you do something slow in the interrupt like Serial.println no interrupts can happen for a long time, this means that we will get inaccurate values because we are not able to respond to the new interrupts until we finish the current one. When we do get to respond the values we read will be wrong.
So it is the same variable, but by using Serial.println in the interrupt we were ensuring that it would become inaccurate.
You want to get in and out of interrupts as quickly as possible
If you look here you will see that I am reading timers directly instead of using micros, you can also see the improvement in accuracy in the graphs - http://rcarduino.blogspot.com/2012/11/how-to-read-rc-channels-rcarduinofastlib.html
Stay with the code you are using for now, once you are a familiar I would like to help you try this code, its faster but a bit new.