Hola:
Faltaba comentar que los controles deshabilitados no se enviarían, así que faltaría algo así:
<form onsubmit="for (i = 0; i < this['userfile[]'].length; i++) this['userfile[]'][i].disabled = false" ...
Cuando se añaden también puede hacerse con insertBefor, por si hay más controles...
Código:
this.parentNode.insertBefore(x, this.nextSibling);
También podríamos ocultar los ficheros asignados con estilos, o a la vez que se generan nuevos campos files generar saltos de línea... pero eso ya queda de tu parte...
Saludos