for example, if you understand an object-oriented and a functional language then you understand two quite different ways of encapsulating state - as objects and as closures. that leads you to thinking about state as something more general than either, which gives you a higher level view of the problems you are tackling.
so learning multiple languages illustrates different aspects of "deeper" issues in programming and motivates the discovery of those abstract concepts, which then provide a stronger "mental toolbox" to do your work.
from my own work, for example, i feel that google's guava library has improved my java code considerably. using that library well requires (i believe) an understanding of the advantages and disadvantages of both oo and fp programming.
Yet, it may not be general enough. With one data point, one doesn't generalize. With two, one tends to think of a spectrum. With three… Now it gets interesting.
For instance, encapsulating state: you had objects and closures. They look pretty different, until you learn of Functional Reactive Programming, where state is handled in a much more timeless fashion.
I will never use C++ to parse text files when I have Perl available. On the other hand, I shudder to think what most C++ software I've seen would look like in Perl.
Learning other languages and thinking differently gives you entirely new ways to solve problems, and can't really be encouraged enough. Beyond that, there's the analogy of the carpenter. If someone working at a carpenter only has one tool (a hammer) how effective can they really be? They might be able to do beautiful work, but just think how much more they could do if they only had a saw.
For me, learning a new programming language is an opportunity to see how different languages implement different features. For instance, JavaScript, lua and C# all have different ways of implementing inheritance. Understanding the pros/cons of prototypal inheritance vs. classical inheritance makes me a better developer.