This is because JavaScript's automatic semicolon insertion (ASI) that will insert a semicolon after certain statements if you're ending them with line breaks. You can read about it in this SO question.
In your case the code has a line break at the return statement that will have a semicolon inserted. This means that:
return 
{
   initialize: initialize,
};
.. will become the following:
return;
{
   initialize: initialize,
};
// will now always return undefined
Uncaught SyntaxError: Unexpected token } MapModule.js:34
This error is because you have a trailing comma inside the object literal:
return {
    initialize: initialize, // <-- whoops
}
This is actually legal in most JS engines... except IE's. Surprisingly this is the one thing IE does according to spec. :-) To fix this, avoid trailing commas:
return {
    initialize: initialize // FIXED
}
Hope this clears some things up.