qualcosa += qualocsaltro
significa
qualcosa = (qualcosa + qualcosaltro)
il che significa che qualcosa viene risettato, a prescindere che parte del nuovo valore fosse già presente o meno.
In pratica è un bug di IE non eliminare quanto scritto prima all'utilizzo di
elemento.innerHTML += "altro testo";
poichè FireFox, Mozilla, Opera, Safari e tutti i browsers degni di tale nome, si comportano come previsto, ricreano il tutto con rigorosa logica e non "con fantasia"
Soluzione ? Gli standards del DOM e non il NON standard innerHTML
function aggiungiInput(elemento){
var input = document.createElement("input");
input.type = "text";
input.name = "nomechevuoi";
input.value = "value se necessaria";
elemento.appendChild(input);
}
<div>
<input type="button" onclick="aggiungiInput(this.parentNode)" />
</div>