потому что
var span = document.getElementsByClassName("close");
возвращает
HTMLCollection, т.е. не один элемент а список элементов.
А дальше идёт навешивание обработчика клика как для единственного элемента:
span.onclick = function() {
modal.style.display = "none";
}
нужно сначала взять элемент из HTMLCollection и на него уже навешивать обработчик
span[0].onclick = function() {
modal.style.display = "none";
}
или в цикле обходить все элементы HTMLCollection и на каждый навешивать обработчик