Lo que hacen los dos paréntesis del final es ejecutar la función que le precede. Es decir, imagina lo siguiente:
myFunc = function(){ /* codigo */ }
lo que hace es asignar una función (la implementación) a una función, de manera que si hacemos
myFunc();
se ejecutará la función ya que se está invocando (o dicho de una manera muy informal, se le han añadido los paréntesis para ejecutarla).
Si ahora volvemos al código de tu pregunta, tenemos:
myNamespace = function(){ /* codigo */ }();
lo que ocurre es que se está definiendo la función e inmediatamente se está ejecutando. Este concepto se conoce como funciones autoejecutables (IIFE, "Immediately-invoked function expressions"), ya que como el propio nombre indica, se ejecutan inmediatamente después de ser definidas.
Otra forma muy común de verlas es de la forma:
(function() {})() ó (function() {}())
Pero ambas hacen lo mismo, ejecutar la función.
Sabiendo eso, si vuelves al código original, lo que harán esos paréntesis es ejecutar inmediatamente la función y asignará a myNamespace el objeto devuelto por el return.