Если выводить в консоль то коллекции не чем не отличаются.
Это не так. В первом случае HTMLCollection, во втором NodeList. Отличие первой от второго
состоит в том, что
HTMLCollection
, хранящая элементы DOM, является динамической. При изменении документа она моментально отражает все произведённые изменения.
То есть, обходите коллекцию, и одновременно модифицируете её. Удалили нулевой элемент - на его место встал первый, а индексу сделали ++. На следующей итерации удалять будете первый, и новый нулевой / бывший первый уже никуда не денется. Как и остальные элементы, изначально имевшие нечётные индексы.
Как удалять элементы динамической коллекции без пропусков:
// вариант раз - меняем направление обхода, от конца к началу:
for (let i = elements.length; i--;) {
elements.item(i).replaceWith();
}
// вариант два - удаляем нулевой элемент коллекции, пока он существует:
for (let n; n = elements[0]; n.remove()) ;