I investigated the HTML.
The icons are generated on the fly using a simple interface that specifies the letter to be used, the RGB color value in hex, and the size in pixels. Which means there are 256^3 = 16,777,216 possible colors for any given letter. Though humans (and their monitors) can’t discern nearly that many different colors in the gamut. Times 26 letters gives 436,207,616 possible icons. I don’t know if a Discourse username can start with a non-letter.
The icon generator always renders the given letter in uppercase in white. And is perfectly happy generating an all white icon with no visible letter if fed the appropriate color code. Or even other ASCII symbols instead of letters. I didn’t get out into testing Chinese Unicode, emojis, or anything else exotic before I lost interest.
I’d bet that when a new user is created their color code is chosen by a hash of something. With probably some filtering to prevent off-white or very pale colors.
My bottom line: Probably not formally guaranteed to be unique, but statistically unlikely to repeat very often.
Such fun manually abusing their API.