Versão curta: quando facilita o raciocínio sobre o programa. Normalmente, os casos são algum tipo de estado global ou recurso estático amplamente utilizado.
Versão longa: Tom Hawtin disse "com uma ação assustadora à distância" ... esse é exatamente o problema dos globais - você precisa saber onde ele está sendo usado e como, ou pode ser esquisito e difícil de rastrear insetos. Locais não são nada mais ou menos que uma estratégia para reduzir o escopo do que o programador precisa entender para raciocinar sobre o programa.
Outro lado do problema de saber onde eles são usados é que você pode acabar com globais duplicados - nesse caso, as coisas podem ficar realmente estranhas à medida que a maioria dos programas obtém e define var1, enquanto em alguns lugares o var2 é usado para armazenar a mesma informação. Especialmente quando várias pessoas estão trabalhando no mesmo código. Os IDEs podem ser úteis para encontrar o uso, reduzindo o custo dos globais, mas eles não fazem nada pelas duplicatas.
Quanto mais globais você tiver, mais difícil será acompanhar o que está acontecendo com eles. Eles devem ser poucos e distantes entre si.