To make this easier, I’m rewriting my plugin code so that the user doesn’t input their own site name. Instead, it’s automatically generated for them behind the scenes.
+1000
As with most “why is the core code like that”, it is probably better to either look at GIT/SVN “blame” and hope you can find a useful comment either in the code or the commits, but AFAIR this code is ancient from the days when MS was a standalone product which will make digging reason up even harder.
Assuming there is no helpful explanation in the code, I would assume that the cause is that in the context of subdomain configuration some DNS hosts/software incompatibility, or web servers having hard time parsing it, something that is probably not true this days.
For some more context read https://serverfault.com/questions/172041/numeric-subdomain