Symbolic links are soft links ln -s source target. We need hard links for this I think.
Make sure to have a backup before following any of the actions below:
I just tested and can confirm this works with one caveat. So, with your example of three folders Vault1, Vault2 and Themes, you’d do something like,
cd /path/to/Themes
ln obsidian.css /path/to/Vault1/obsidian.css
ln obsidian.css /path/to/Vault2/obsidian.css
It would be simpler if you didn’t need to have a separate themes folder and assuming you already have an obsidian.css in Vault1 but none in Vault2, then you’d just use this,
ln path/to/Vault1/obsidian.css path/to/Vault2/obsidian.css
This will create an obsidian.css in all the vaults which will seem like separate files but will be essentially the same. So if you edit something in one file, you can open the other to confirm that it’s changed as well.
The one caveat is if you have both the vaults open in Obsidian and then modify the obsidian.css file, Obsidian will only update to show the changes in the vault whose file you opened. For the other vault, you’d need to close and reopen for it to fetch the updated file. I am guessing this is because it might be due to some internal caching. But the only thing you need to remember is to close/reopen the vault after making any changes to the obsidian.css.