No final uma variável temporária continuará sendo criada, só que agora "por de baixo do capô"

sim, até porque, na parte que diz:

Coloque a bola 2 na caixa A. Pegue a bola 1 da caixa A.

se a gente considerar que não tem variável provisória, necessariamente existirá um momento em que a caixa irá conter 2 bolas, ou seja, a variável irá guardar dois valores em um mesmo endereço de memória.

Uma curiosidade da linguagem C: é possível armazenar dois valores diferentes em uma mesma variável (não falo de arrays), nem preciso dizer que não é a prática mais aconselhável, mas ainda asssim tem algumas aplicações em ambientes com pouquíssima memória.