Да, это наверное может объяснить ситуацию: при изменении содержимого body всё, что в тегах <script></script> внутри этого body заново не анализируется.
Решением может стать переназначение обработчиков (ну или как уже сказали не стоит это вообще использовать).
<body>
<button id="button">click</button><br>
<script>
document.body.onclick = function () {
document.body.innerHTML += 'text<br>';
document.getElementById('button').onclick = function () {
alert('click')
}
}
document.getElementById('button').onclick = function () {
alert('click')
}
</script>
</body>