Ну так у рекурсии должен быть конец - вот конец и наступает, когда t.left = NIL.
Схема такая - определяем, куда вставлять относительно текущего узла: направо или налево.
Далее проверяем - IF left (right) # NIL THEN делегируем вставку им left (right) .Insert(tree),
а ELSE t.left (right) := tree END.

Если NIL, значит работу рекурсивно делегировать уже некому, выполняем сами

По поводу VAR - это при некоторых рекурсивных алгоритмах на деревьях процедура может таким образом заменять переданный ей узел (указатель). Там у Вирта есть...