While it might sound like a good idea, giving your customers what they ask for might be doing them a disservice.
Often times the customer will come to us with a solution already in mind (“We need a single screen where you can enter your order and do your checkout AND print your receipt!”). Ideally though, the customer would present a problem instead (“There are too many steps to our ordering process and it needs to be less cumbersome”). An experienced development team has probably solved similar problems before and will have ideas that the customer may not have even considered. Usually these solutions end up being better and may even be less work. The development team will also have a broader understanding of the capabilities that technology brings to the table.
Regardless of how the problem presents itself, solving the problem should be a collaborative effort. The development team should be able to propose multiple solutions from which the customer can choose and tweak. Even if your customer(s) always present problems in the form of premeditated solutions, it is a moral obligation of the development team to counter-propose better solutions if one exists. Nobody understands the problem better than the customer; therefore, the customer should ultimately be responsible for selecting (or at least accepting) the solution.
Admittedly, not all development teams are staffed for this model of collaboration. However, development teams should strive to collaborate with the customer to deliver solutions, not just code.