How to add tags to an entry per site basis. And then only get the tags for that site in the frontend
currently disabling multi site for tag is not supported

unless you were to fork Craft and change the isLocalized() return
value from true to false

https://github.com/craftcms/cms/issues/3483#issuecomment-440782270
so tag itself is always created for all languages but you need another thing.
you need adding tag to entry per site basis so you have to check tag field -&gt; advanced setting -&gt; Manage relations on a per-site basis -it seems you enabled this already-.
now if there is two site and tag1 is added or selected for site1 entry but tag1 is not selected for that entry on site2, if you change source Locale to site2 id on your code, tag1 is not showing on results. - still tag1 is available on site1 and site2 but is not showing up on result because you enabled manage tag on per site basis and tag1 is not attached to site2 entry -