This made me wonder why Satoshi didn’t simply use single SHA256.
Because of
length extension attacks.
but single SHA256 already offers full 256-bit preimage resistance which is what PoW mainly needs
Of course. But the same hashing is used in other places: in transaction hashing, during computing sighashes, when creating merkle trees, and so on. Satoshi simply created it once, and reused everywhere.
were there other reasons in 2008/2009
Not really, Satoshi just created some code, which was convienient to implement, and that was it. For the same reason, block hashes are little endian: it is not necessary to change endianness, and they could be written as big endian numbers as well, but because x86 machines were little endian, and because big number implementation from OpenSSL stored them as such, he simply didn't convert it to big endian, because it was not needed.
So, a lot of things don't have that much justification, other than how easy it was to implement it.
From a performance perspective, double hashing adds roughly 2x the hashing work for miners.
Satoshi didn't care that much about mining performance, for example because nonces in block headers have only 32 bits. If he would care, then additional bits, for example from the previous block hash, would be used instead. But it is, what it is, which is why miners tweak block versions and timestamps, to get more speedup, even if it would be better, when they would just change expanded nonce instead.
He was just a CPU miner. He mainly tested, that mining works correctly, and he stopped mining, when the rest of the network started using GPUs, FPGAs, or ASICs, to reach better performance.
switching to single SHA256 or SHA256+HMAC in a hypothetical future hard fork?
If people will ever switch, then probably to SHA-3, or a completely different hash function, but only if SHA-256 will be broken. If not, then it will stay, as it is.
As a developer, you can always change the mining algorithm, just like a lot of altcoins did, but it would deprecate all of that hardware, which was created specifically for double SHA-256. And there is no reason to do that, as long as SHA-256 works fine.