The issue really comes down to leadership style. Most teams need a lead; most teams want a lead. But they don’t want a tyrant: they want someone who will organize things so that everyone else can focus on the work at hand.
In a complex project, it is also essential to have someone whose main job is thinking holistically: will everything tie together? Most people on a team need to think about this as they work, but they don’t have time to be preoccupied with it. That is a tech lead’s job: to be preoccupied with the holistic issues.
The tech lead also does not need to be the best programmer: A good tech lead is highly knowledgeable — otherwise they don’t know when issues are rat holes or important. But a good tech lead really needs to be able to bring out the best in others. I like the model of dialectic (Socratic) discussion for resolving issues: a good tech lead will, as the author above says, “including voices that might get drowned out, quieting those that tend to dominate”, and stimulating discussion when it needs to happen but is not happening on its own.