Add Numbers deux — Bitwise Addition
JavaScript (ES6), 34 bytes
Takes input as (A)(B), where A+B is a positive-looking 32-bit integer, i.e. less than 0x80000000.
Returns an array.

A=&gt;g=B=&gt;B?[A^=B,...g((B&amp;~A)*2)]:[]

Try it online!
Or for 35 bytes, a BigInt version with unlimited input:

A=&gt;g=B=&gt;B?[A^=B,...g((B&amp;~A)*2n)]:[]

Try it online!
How?
In order to use only 2 variables and pass a single variable to the recursive function, we apply the XOR right away to A and prepend the result to the output array.
Instead of computing (A AND B) * 2, we now need to compute (B AND (A XOR B)) * 2. Fortunately this can also be expressed as:
(B AND (NOT A)) * 2

leading to the rather short (B&amp;~A)*2 in JS syntax.