Потому что в previousSibling попадают и текстовые ноды (пробелы между тегами, иначе говоря). В этом легко убедиться, выведя в консоль результат выражения
document.querySelector('.push-to-add').previousSibling
А чтобы увидеть все узлы на этом уровне, выполните
console.dir(document.querySelector('.push-to-add').parentElement.childNodes)
Вам в данном случае нужно использовать previous
ElementSibling или убрать пробел между тегами, чтобы исчез текстовый узел, возникающий между этими элементами:
</section><button class="push-to-add">