I agree that reusing variable is more often than not a code smell. Probably such code should be refactored in smaller, self-contained, blocks.
There is one particular scenario, OTOH, in C#, when they tend to popup - that is when using switch-case constructs. Situation is very nicely explained in: C# Switch statement with/without curly brackets… what's the difference?C# Switch statement with/without curly brackets… what's the difference?