Well, this is a really really bad way to do this, anyway.
You should instead use createElement( ) and append the created element to the list of nodes in the <div>
Not to ask a dumbass question, but what's the point of all your unset( )
All those variables are local to the function, so they will all disappear when the addInput() function is finished, anyway.
Here, a simple sample, based on your code, but without the ugly innerHTML stuff.
The "counter" and then "newi.value" stuff are just for demo purposes, so you can more clearly see what is happening. If you click the submit button and look at the URL in the address line, you'll see all the "inputs" fields with their values, correctly.
function addOne( )
var ui = document.getElementById("UserInput");
ui.appendChild( document.createElement("br") );
var newi = document.createElement("input");
newi.name = "inputs";
newi.value = ++counter;
<input type="text" name="inputs" value="0" />
<input type="text" name="inputs" value="1" />
<input type=button value="add an inputs field" onclick="addOne();">