Bueno básicamente lo que hago es lo que mensionas en la primera opción...
 
Pongo el código de nuevo (esta vez bién y completo) ya que la última vez estaba en un cyber y no lo tenía a mano...  
Código:
 var nodoPadre = "";
function articulos(rubro){
  if(nodoPadre == ""){
    nodoPadre = rubro; /*rubro es un argumento que pasa el elemento clickeado con "this" */
    rubroElegido = document.getElementById(rubro.id);
    rubroBandera = true;
    valida();
  }else{ /*Acá es donde viene el error*/
    /*Si hago un alert(nodoPadre.childNodes.length) el número de elementos hijos es correcto*/
    /*pero al intentar eliminar los nodos hijos me dice que nodoPadre no esta definido :S*/
    var numeroNodos = nodoPadre.childNodes.length
    for(var i = 1; i <= numeroNodos; i++){
      nodoPadre.removeChild(i)
    }
    nodoPadre = rubro;
    rubroElegido = document.getElementById(rubro.id);
    rubroBandera = true;
    valida();
  }
}
  Por cierto, al script lo estoy probando en IE 6 quizas pueda ser eso... el gran problema es que debido a que no dispongo de mi maq para programar estoy escribiendo el script en un pentium 200 y no se banca ni a palos FF...
Si alguien sabe como puedo hacer andar esto estaré muy agradecido 
 
 
Saludos