Estimado,
1) Correcto, está mal ahí eso que señalás. Lo corrijo.
2) La solución es algo ingeniosa con el manejo del stack. Efectivamente en las líneas antes de la llamada recursiva se realizan 3 push más el call, por lo tanto se agregan 8 bytes al stack, pero a diferencia de otras soluciones, esta comienza realizando 2 POP, por lo tanto de esos 8 bytes que se agregan al stack, solo 4 son bytes 'extra' que se agregan en la llamada recursiva. Por lo tanto el consumo de stack es 4 bytes para cada llamada recursiva y 4 bytes para el caso base.
Saludos,
Federico