Si cancellano perché innerHTML += prevede la riscrittura dell'intero innerHTML e quindi per ragioni di sicurezza i file fields vengono svuotati.

Prova questo
codice:
<html>
<head>
<script language="javascript">
function addFileUpload(fld) {
  var new_row = document.getElementById(fld).insertRow();
  var new_td = new_row.insertCell();
  new_td.innerHTML = '<input type="file" name="uploads[]" />';
}
</script>
</head>
<body>
<form name="mioform">
<table id="fileupload">
<tr>
  <td>
    <input type="file" name="uploads[]" />
  </td>
</tr>
</table>
<input type="button" onclick="addFileUpload('fileupload');" value="more" />

</form>
</body>
</html>
Così, aggiungi righe ad una tabella via DOM e le righe precedenti non vengono assolutamente modificate.