Why hasn't cold storage (offline signing) been supported by Bitcoin Core (GUI) up till now (0.19.0.1)? Is there any deep reason not to support this? Or is this merely a "good idea, but no volunteers" situation?

By the way, although Bitcoin Core had supported BIP32 several years ago, it uses hardened derivation for addresses, which makes it impossible for the watch-only side to derive new addresses for receiving/change, or used addresses to watch transaction history and final balance.
Prior to segwit doing this securely required carrying around enormous prior transactions.

Prior to PBST there wasn't a standard serialization that covered all the interesting use-cases.

It's been possible to offline sign for years using the CLI and many people have been doing so.

More recently this PR adds a GUI for doing this using PSBT: https://github.com/bitcoin/bitcoin/pull/16944