To send with keysend, you need to reveal your node's public key. With invoices, that's not necessary.
Do you need to, though? At what point do you have to reveal it as the sender?
The receiver needs to reveal it! The only reason I know BlackHatCoiner's public key is because we considered opening a channel. Otherwise there's no way to reveal it without revealing, well, your node ID, as that's the same thing.
Meaning if I just want to receive donations non-interactively for instance, people will know how many channels I have, with whom and how large.
In my opinion, spontaneous keysend payments are practical to transact with direct peers whose node ID you already know, but for anything else I'd prefer BOLT12 offers.