Could a wallet pull a transaction history from an archive node?

Afaik wallets don’t normally show spent transaction history for a restored wallet in grin, since a regular grin node might not store those outputs anyway.

If a wallet selectively connected to an archive node and then scanned all outputs, could it retrieve a transaction history of spent outputs?

Not fully. A block is a set of inputs, a set of outputs and a set of kernels. First, if you lose a payment proof you can’t prove a payment even with all the history because a payment proof is an offchain statement referencing onchain data. Second, if you see a block and scan 1 input and 1 output to be yours, then you can’t tell what the construction of your transaction was. It could be that you sent the funds to one of the outputs and created a change output, but you can’t tell to whom. It could even be a self-spend transaction or a payjoin. Moreover, if you see 2 inputs and 2 outputs that you own, you can’t tell how many transactions you did unless there’s a single kernel in the block. Users need to protect transaction data because of the automatic transaction aggregation that happens at the block level. However, if someone was paying attention to the mempool and retained deaggregated txs, they’d be able to prove this and convince us of the transaction structure.