Apparently I misread the spec. Someone highlighted this set of phrases:
```
if it includes offer_paths:
MAY set offer_issuer_id.
otherwise:
MUST set offer_issuer_id to the node's public key to request the invoice from.
```
Then they pointed out the direct implication: if you include an offer path (aka blinded path) you do not have to set offer_issuer_id at all
So the spec does not say the only exception is if you are connected only by private channels; a broader exception is there: use blinded paths.
Related lyrics, I asked if Eclair's implementation of bolt12 hides your node id when creating a bolt12 offer with blinded paths, and the docs seem to say it does:
```
If you specify blindedPathsFirstNodeId, your public node id will not appear in the offer: you will instead be hidden behind a blinded path starting at the node that you have chosen. You can configure the number and length of blinded paths used in eclair.conf in the offers section.
```