First off, I’m assuming you mean domain names vs subdomains (as TLDs would be .com, .net, .org, .eth and so on)
I looked into this a while ago and the convention of not using underscores in domain names is from an incredibly outdated specification hailing from 1987 that was last updated in 1997 (the last spec is from 1998 but is about URI’s):
- RFC 1034 - Domain names - concepts and facilities
- RFC 1035 - Domain names - implementation and specification
- RFC 1123 - Requirements for Internet Hosts - Application and Support
- RFC 2181 - Clarifications to the DNS Specification
- RFC 2396 - Uniform Resource Identifiers (URI): Generic Syntax
Summary: HostNamingRules < CF < TWiki
The TLDR is that it was decided that domain names should follow ARPANET hostname rules to prevent incompatibility with legacy software like telnet and mail before operating systems other than Plan9 conformed to unicode.
ENS doesn’t have to make those same considerations because it doesn’t support legacy software regardless. I haven’t seen any up to date specification that disallows underscores for any reason beyond this, let alone a reason that matters to ENS or modern software.
These same specifications also contains many antiquated rules restricting the length of names, internationalized names, all unicode and many more things we wouldn’t want to restrict ourselves to.