The reason domains cost what they do is that providing them costs (with the current infrastructure / policies). The current cost price, for the registry, to register a domain is anything from $3.50 (for TLDs with 10M+ registrations) all the way to $20 (for TLDs with ~50k registrations). A SRS, a backup SRS, all the extra services (thick Whois, support, billing, backups, administration, auditing, legal etc) don't come for nothing. Obviously scale makes a big difference to price.
Where are your cost numbers coming from? Ultimately, the cost of maintaining a domain registration record is a small text file in a filesystem somewhere, plus glue records copied into the parent domain. I don't know of any filesystem that costs $3.50 to store a text file under 512 bytes, even including backups and filesystem administration. Accordingly, there are non-TLD domains (e.g. dyndns) that let you register any number of subdomains at no cost.
Of course, support can cost any amount whatever. But it generally doesn't cost very much. Mike Lawrie handled the entire South African .za domain single-handedly from 1994 until 2002 in his spare time.
The GTLD servers also bear a cost of answering queries, but that cost is zero for domains that nobody queries (most of them!) and in any case is not paid by registrars or registries.
Let me offer an alternative hypothesis. Domains cost money because they provide a valuable service, and competition in registry operators is nonexistent by the nature of the DNS. To register a subdomain of a particular parent domain, such as .com., you must pay whatever the registry controlling that domain chooses to charge, either via an intermediary such as a domain name registrar or directly.
Because subdomains of popular domains such as .com. are valuable and there is no competition in the market for them, you get to pay monopoly rents, which have fallen somewhat since ICANN wrested control of the GTLD monopoly from Network Solutions.