How do hardware wallets integrate with software clients/nodes? It isn't clear to me how hardware wallets interact with software clients. Is there a standard defined for this? Is it similar to signing on an offline computer and then transmitting a signed message via a different online computer? Or (I hope not) do software authors have to write support for individual hardware wallets?

The tightest integration would be from the last option, but I'm wondering if there is a more manual approach similar to the "sign on the offline computer" workflow.
Sadly there is no standard yet.

But a wallet standards group is being formed and some meetings are planed (april 2017).

At the moment, each hardware wallet provider writes plugins for wallet-apps which is a strange development direction.
There are Trezor/Digitalbitbox/Ledger plugins for Electrum and Copay,... but the plugins are in the source code bundle of the corresponding wallet-app provider, leading to the problem, that the hardware wallet provide has no direct way of fixing bugs or even improving the plugin.

A standard would be the right direction.