diferencia entre "vacío 0" y "indefinido"

Estoy usando"Compilador de cierre", al compilar mis scripts, paso lo siguiente:

Antes de compilar:

// ==ClosureCompiler==
// @compilation_level SIMPLE_OPTIMIZATIONS
// @output_file_name default.js
// @formatting pretty_print,print_input_delimiter
// ==/ClosureCompiler==

var myObj1 = (function() {

  var undefined;   //<----- declare undefined

  this.test = function(value, arg1) {

    var exp = 0;
    arg1 = arg1 == undefined ? true : arg1;  //<----- use declare undefined
    exp = (arg1) ? value * 5 :  value * 10;

    return exp;
  };

  return this;
}).call({});

var myObj2 = (function() {

  this.test = function(value, arg1) {

    var exp = 0;
    arg1 = arg1 == undefined ? true : arg1;  //<----- without declare undefined
    exp = (arg1) ? value * 5 :  value * 10;

    return exp;
  };

  return this;
}).call({});

Compilado:

// Input 0
var myObj1 = function() {
  this.test = function(b, a) {
    a = a == void 0 ? true : a;  //<-----
    var c = 0;
    return c = a ? b * 5 : b * 10
  };
  return this
}.call({}), myObj2 = function() {
  this.test = function(b, a) {
    a = a == undefined ? true : a; //<-----
    var c = 0;
    return c = a ? b * 5 : b * 10
  };
  return this
}.call({});

Con esto creo que la cuestión del uso de "vacío 0" y "indefinido", ¿hay alguna diferencia en el uso o los dos casos están bien ?.

Editar

si defino "var undefined" compilado con "void 0", si no definí "undefined" compilado con "undedined", entonces no es una cuestión de número de caracteres entre "undefined" y "void 0"

Prueba

Edit II: rendimiento, basado eneste enlace

Código y prueba

IE 8:
typeof: 228ms
indefinido: 62ms
nulo 0: 57ms

Firefox 3.6:
typeof: 10ms
indefinido: 3 ms
nulo 0: 3 ms

Opera 11:
typeof: 67ms
indefinido: 19ms
nulo 0: 20ms

Chrome 8:
typeof: 3ms
indefinido: 5 ms
nulo 0: 3 ms

Respuestas a la pregunta(1)

Su respuesta a la pregunta