vscode-spell-checkerで除外する単語を「Add *** to workspace settings」で登録しようとしても何も起きない時があり再現条件が謎だったんだけど、vscodeのworkspaceにはsingle-folderとmulti-rootの2種類があって後者の場合にうまくいかない挙動になるということだった。
https://github.com/streetsidesoftware/vscode-spell-checker/issues/2736
single-folder workspaceは ".vscode/settings.json" に設定が書かれる一方、multi-root workspaceは ".code-workspace" ファイルに設定が書かれるという違いがあって、これが拡張機能がworkspace設定を読み書きする時に差異を発生させる、という感じ。