The no-shadow is like a good default rule to have. I can think of many reasons why this would be a good default. Allowing variable shadowing can:
- Complicate scope resolution
- Make it difficult to understand code intent
- Complicates refactoring
And many others.