Вам не нужно сохранять его на стороне сервера; просто делайте обычную обратную передачу и добавляйте новый HTML на сервер - но сохраняйте пока список в возвращенном HTML.
Так, например, упрощенный HTML изначально будет:
<form>
<input name="info0" type="text" value="" />
<input name="done" type="submit" value="I'm done" />
<input name="more" type="submit" value="Add another" />
</form>
Если пользователь наберет «foo» для «info0» и выберет «Добавить еще», возвращенный HTML из обратной передачи теперь будет выглядеть так:
<form>
<input name="info0" type="text" value="foo" />
<input name="info1" type="text" value="" />
<input name="done" type="submit" value="I'm done" />
<input name="more" type="submit" value="Add another" />
</form>
Ключ в том, что вы ничего не сохраните на стороне сервера, пока пользователь не завершит работу. Вы можете сделать удаление таким же образом, например, с флажками или кнопкой рядом с каждым входом.