Well, when we get to the basics of why I agree that implicit variable declarations are a bad thing, at the root of the problem we have the corollary that variables are never explicitly typed. There is a belief floating around that implicit typing makes programming easier to do and learn, and I can say from my experience with my brother-in-law and his voyage into the programming world that this just isn't true.
In order to explain why the following Python code is bad to a beginner you still have to explain the concept of types:
>>> x = 12
>>> y = "13"
>>> x + y
TypeError: cannot concatenate 'str' and 'int' objects
The error message is hard for a new programmer to understand because str and int aren't tangible. Also, when I'm helping him debug his Python programs, accidental type conversions is one of the most common error I see him make (the second being the indentation problem). It's quite annoying to have to track these down by first running the program, and having to test every single corner of the code. Static typing eliminates the need for type testing.
In the end I see absolutely no advantage circumventing the few keystrokes it takes to explicitly write:
string x = "12";
int y = 13;
Now when the programmer writes: x + y the inevitable type-error message that results is no longer something cryptic.
In the relatively rare case a programmer truly needs a variant type, it is easy enough to just use something like variant or object.
If I had it all to do over again, I'm not sure whether I'd pick to teach him Python as a first language. I'm not sure if the short-term benefits outweigh the long term handicaps.
I found this argument against implicit type declarations, and I have to say it's better written than anything I could have done:
http://bit.ly/abVONc