потому что считывается прайс при рендере и нет актуального значения при удалении
function removeItem(e) {
if (e.target.classList.contains("close")) {
let price = JSON.parse(localStorage.getItem("price") || "[]");
let sumAfterRemove = price.reduce((acc, curr) => acc + curr.price, 0); //пересчет суммы
localStorage.setItem("price", JSON.stringify(price)); //перезапись объектов
//клик на отрисованный объект до перезагрузки страницы, например
//было 2 объекта остался пустой массив, а после перезагрузки страницы удаляет правильно
//(было 2 объекта и при клике на Х остаётся 1 объект в массиве )
localStorage.setItem("sumPrice", JSON.stringify(sumAfterRemove)); //перезаписываю сумму
getSumPriceToRender(); //рендерю в разметку текущий результат суммы
}
}