Soltukiev Malik
Насколько я понял, useEffect добавляет обработчик события, потом возвращает функцию, которая удаляет обработчик, но удалится он при следующем вызове useEffect, но добавится еще 1, прежде чем он удалится. Как я и думал изначально, вот только не понял, где он хранит вернувшуюся функцию, видимо как то запоминает, и потом впихивает его в основную функцию при вызове useEffect.
Сначала удаляет, потом добавляет. Хранит в памяти