I have encountered two solid grey textures, #303030 and #1b1b1b, being put through BCn texture compression and coming out as #313031 (changed) and #1b1b1b (unchanged), presumably due to the 32-bit (8:8:8) to 16-bit (5:6:5) stage. For a texture with many colors I understand that texture compressor could pick arbitrary endpoints for the palette and I am effectively at the mercy of chance regarding which colors change how much. However, with single solid color textures, I am hopeful that there is some modern equivalent of web-safe colors that I could at least somewhat rely on. Does this exist?
There are two possibilities: you either are in control of the image format or you're not.
If you are in control of the image format, and you need a color to be exact, then use an image format that gives you that exact color. If the color you want cannot be represented in a 5:6:5 format, don't use them.
If you have no control over the image format, then you're going to have to look at what image format you're told to use and find something that's good enough. For basic 5:6:5, that's not too hard. But if you're being forced to use actual texture compression... you're out of luck.
Note that JPEG does not care about "web-safe colors"; it will do whatever it wants to the image. The same goes for texture compression schemes. By using texture compression, you have decided to sacrifice image accuracy for smaller space. That's just the nature of the beast.