Потому, что в первом случае вы передаете возвращаемое значение функции, а во втором функцию, которую нужно выполнить.
т.е. element.addEventListener ожидает вторым аргументом функцию, которую следует выполнить. Вот этот кусок
myFunc('arg')
это вызов функции с аргументом 'arg', вызов функции будет произведен сразу, и его результат (который будет передан в return функции) будет передан в element.addEventListener. Вы конечно же можете в myFunc вернуть функцию, тогда будет работать.
также можно написать так
element.addEventListener( "click" , myFunc.bind(null, 'arg') );
метод bind создает и возвращает функцию обертку, при вызове которой, в нее будет подставлен аргумент 'arg'.