Он происходит при удалении компонента, а для этого ререндер происходит. В unmount ставят обычно очистка таймаутов и прочего т.к. утечка может быть, что компонент удалился, а обращение к нему в стеке сидит
Я имел ввиду стек событий. Ты можешь например послать запрос или таймаут запустить в компоненте, чтобы в нем что-то показать, но когда удаляешь компонент таймаут висит в стеке и ждет таймер этот, а когда таймер пройдет компонента уже нет
в этом нет смысла на чистом js, закрывая вкладку и удаляется все. На ваниле removeEventListener разве что нужно когда твое событие взаимодействует с элементом, которого уже может не быть на странице