It's probably just the optimizer doing its job (or not, in the second case). It's probably harder for it to optimize the second allocation away since you could theoretically access that memory outside the scope of the pointer.
I managed to repro this in MSVS 2010, on Release mode, and adding a simple
std::cout << Array1[42];
brought the memory usage to the same value. (granted, I did use a lower value)
There's also no code generated for the first snipped, but there is for the second one.