Hey ckshen,
I don’t have the answer, but it’s an interesting question.
I also noticed that it doesn’t work with many default icons. It will work with “thumbs-up” and will automatically put a filled icon when we click it, but for other icons like “wrench” or “link”, the icon doesn’t render.
It’s also worth mentioning that using the API to replace icons as it’s done here Change the Like Icon to 👍 for example seems overridden by the Reactions discourse reactions like icon setting.