Totalnie nie rozumiem tego kodu. Wydaje się mocno przekombinowany.
Niemniej wartości się dodają, bo przecież przycisk reset usuwa jedynie to, co jest w polu, nie zaś – to, co jest w obiekcie words, z którego tę treść generujesz. Musiałbyś przy kliknięciu w reset dodatkowo usuwać wszystko z obiektu words.
Co do drugiego problemu: wynika z tego, że skrypt nasłuchuje na klik na cały div. Przestrzeń między przyciskami to też wnętrze diva, więc zostaje wklejona cała jego zawartość. Musiałbyś przy kliku sprawdzać, czy aby na pewno został kliknięty przycisk (evt.target.matches( 'button' ) np. albo warunek z nearest).