Почему память в стеке для auto переменной не резервируется с помощью rsp?
А почему память не резервируется с помощью rsp? А если произойдет прерывание? Или тут какая-то хитрость?

Тут какая-то хитрость под названием red zone.
Не уверен, что понял правильно вопрос. Видимо, вам непонятно, почему в первом примере нет аналога subq    $16, %rsp?
Потому что не надо. rsp все равно никак функцией main не используется, была бы просто лишняя пара инструкций.
Во втором примере rsp нужно настраивать, т.к. есть вызов f(), и нельзя, чтобы она лезла в стек main().