Закрытие формируется при создании 2 функций. Функционально они должны работать одинаково с точки зрения «формирования замыкания». Вам не нужно возвращение для формирования закрытия.
Однако ...
В # 1, когда вы вызываете foo (), вы добавляете прослушиватель событий в onClick. Если вы будете вызывать его снова и снова и снова, он будет продолжать присоединяться к событию onClick ...
В # 2, когда вы вызываете foo (), вы просто «закрываете» функцию. Если вы вызываете его снова и снова, он не присоединится к событию onClick ...
И в # 1, если ссылка на someElement была обновлена с тех пор, при повторном вызове foo () она будет использовать новую ссылку на someElement ...
Предполагая, что вы просто хотите присоединить функцию onClick один раз, и вам больше не придется ее повторно подключать, я напишу код, подобный этому ...
(function() {
var a = 0;
someElement.addEventListener("click", function() {
a++;
}, false);
})();
Эта автоматически выполняемая функция избавит от необходимости добавлять "foo" в глобальную переменную, поскольку вы используете его только один раз.