Is it good practice to use, instead of this Revealing Module Pattern ...
var MyModule = ( function() {
  function Method1() { alert( 'method1' ); }
  function Method2() { Method1(); alert( 'method2' ); }
  function Method3() { Method1(); alert( 'method3' ); }
  function Method4() { Method1(); alert( 'method4' ); }
  return { Method1 : Method1,    // these
           Method2 : Method2,    // lines
           Method3 : Method3,    // are 
           Method4 : Method4 };  // redundant...
} )();
MyModule.Method1(); 
MyModule.Method2();
... this slight variation:
var MyModule = {};
( function() {
  var Method1 = MyModule.Method1 = function () { alert( 'method1' ); };
  var Method2 = MyModule.Method2 = function () { Method1(); alert( 'method2' ); };
  var Method3 = MyModule.Method3 = function () { Method1(); alert( 'method3' ); };
  var Method4 = MyModule.Method4 = function () { Method1(); alert( 'method4' ); };
} )();
MyModule.Method1();
MyModule.Method2();
Is it 100% the same at the end? Would this considered as good practice?
                        
It's not the same. If you were to rename your module at any time or wish to use it in a different name, you won't be able to.
Also, by returning the object at the end of the array, you make it perfectly clear what's exposed out of the object.