Ill get in here quickly and say that variable declaration is more than clarity.
In ASM it is only possible to reserve local variables on the stack at the beginning of a function. You can of course edit the stack directly, but the variables aren't named in that instance, and ASM is not compiled =) When you do it in C it serves the purpose of lightening the weight on the compiler, converting your C code into ASM and being miscommunicated or hard to read. I don't think it makes much difference in terms of performance. Memory is memory from what I understand.
So called scripting languages are compiled (or at least interpretted), even if you don't see them do it. There are optimizations there as well, moving variables around in memory and data alignment may come into play, but it comes down to your language and its implementation.