Hi,
Is it technically possible/recommended in HikaShop to output a distinct @id and/or distinct URL per variant inside the JSON-LD, without turning variants into separate product pages?
HikaShop will already output distinct URLs per variant inside the JSON-LD, provided you didn't configure a canonical URL in the main product.
Also, if you turned on the "Remove categories and products id from URLs" setting, then it's possible that the URL for each variant will be the same as the main product since the distinction between the URLs of a product page and its variants comes from the id.
Could outputting unique URLs/identifiers per variant create SEO risks such as:
multiple URLs being discovered/indexed for essentially the same product (cannibalization)
conflicts with canonical tags (main product canonical vs variant URLs)
It's indeed a risk. It depends how Google handle that situation. I'm not privy to Google's SEO issue detection so I can't say. This might require some testing or looking around for information because I don't have it.