It's actually a bit worse than that. Customers almost never know their problems; instead, they understand their problems through the accumulated knowledge of their profession, and have a very hard time stepping out of “the way things are done” to nail down their ultimate goals.
One of our biggest challenges as developers is that software engineering is very much a meta-profession: Being fully competent in computer science is only useful if you can apply that competence to real-world problems, and that inevitably means having to become expert enough in a field to which you may never have had any exposure.
A good PM understands this and turns development into an iterative process in a tight loop with customer feedback: You push the project forward a little, check with customers, apply their feedback, and lather-rinse-repeat until you've come up with a good solution—one that typically innovates on the status quo.
A bad PM tries to spec everything ahead of schedule and never really gets off the ground, her best possible outcome being automating existing processes at the tail end of a waterfall-induced nightmare.
A worse PM is overwhelmed and avoids nailing down details, seeks no customer involvement, and leaves things to fester for weeks without any feedback. I don't know anyone who enjoys being on the poor team tasked with dealing with that kind of work.
Incidentally, this is what I've always taken agile development to mean: It's not about stand-ups and kanban boards, but rather about acknowledging and embracing the fact that programming is an inherently inexact science.