When a CA issues a cert, the cost to the CA is essentially nothing.
When a registrar registers a domain, that costs the registrar money because the registrar has to pay a fee to the registry. So a registrar generally cannot give out domains for free.
Now, a registry could in decide to charge no fee. That's what .tk used to do. So you could get a .tk domain for free. Of course then .tk domains got the reputation of being cheap junk and spam.