Выполняя menu.onclick = ..., ты указываешь интерпретатору JS привязать функцию к событию click объекта menu. И когда это событие происходит, интерпретатор автоматически создаёт объект события и вызывает привязанную к событию функцию - передавая этой функции этот объект в качестве параметра.
Событие клика сначала срабатывает для того элемента, на котором кликнули, потом на охватывающем его элементе, потом на элементе, охватывающем охватывающий элемент и т.д. Событие всплывает от точки клика до body.
В процессе всплытия срабатывает каждый обработчик, встретившийся на этом пути. И внутри обработчика надо отличить ситуацию "кликнули именно по элементу, к которому привязан обработчик" и "кликнули по вложенному элементу". Именно для этого и нужен event.target - содержащий тот элемент, на котором реально кликнули.
В твоём случае вместо того, чтобы повесить по отдельному обработчику на каждый элемент menu__item, повешен единственный обработчик на охватывающий все menu__item элемент menu. А в обработчике проверяем, что кликнули именно на menu__item, и передаём элемент, на котором кликнули, в функцию select.
Такой способ обработки (когда один обработчик вешается не на каждый объект клика, а на охватывающий все объекты кликов объект) называется "делегирование событий":
https://learn.javascript.ru/event-delegation