Channels are easy to reason about. If the language that gives me channels asks me to let it manage memory too, then cool, fine with me.
Given that it can take weeks to debug a deadlock, I am more than happy to pay the price of some boilerplate and difficult types if that helps correctness.