Your date is being evaluated as string so when you expand the variable vMaxDate QV is interpreting it as 2012 - 5 which equals 2007.
To have it evaluate to a date remove the date function like this:
Load Max(Date#(MONTH_BATCH,'YYYY-MM'),'YYYY-MM') as MaxDate
resident Test ;
And to set it to the variable:
Let vMaxDate = peek('MaxDate', 0);
The variable will then be 41030 which is May 1, 2012.