I had a few brief conversations about this on Slack. I'm still not 100% sure, but I think what's going on here is, "Attach to Tangle" creates a zero-value transaction referencing that address, and then does the PoW to attach the transaction to the Tangle.
I wonder if this is done because of the way the underlying JS lib works. When you invoke the
createNewAddress command, the default behavior is to progressively generate new addresses until it finds one without any transactions associated with it on the Tangle.
By creating and broadcasting a transaction that references that address, this causes the JS lib to skip that address the next time the wallet calls
This is all speculation on my part; I would be grateful if someone more knowledgeable about the wallet internals could confirm/correct this!