My conclusion: QMK could do this, or at least some firmware could do this. It's hard to come up with an eloquent way to express it, however.
But there's no a priori reason that pressing shift-1 couldn't be special-cased to instead send shift-2, yielding @. It's all being precomposed by the firmware, after all.
It's too bad, because I have a custom key for delete-back-word, and I want shift-thatkey to send delete-forward-word, but as you point out, I can't. But that's a limitation of QMK, not a fact of nature.