Простой ответ: глобальные переменные.:)
React просто перед самим запуском устанавливает глобальную (условно) переменную указывающую на текущий исполняющийся компонент, на которую и смотрит в сою очередь хук. Именно потому хуки нельзя использовать вне компонента.
Вот
тут я упрощённо изобразил, что дальше происходит внутри useState.
Конечно всё намного сложнее, но основная суть именно такова. Подробнее - уже в исходники.