I'm a business software developer. The end-user is not a professional software designer. If you let them do the design work because you don't really understand their job you end up with an amateur system. Users prefer a well thought out professionally crafted simple design, one where the developer took the time to understand the user's job rather than played with bells and whistles all day. I have seen many projects spiral out of control, such as $20 million sunk into a project that took 7 years, failed to meet any deadlines, failed to deliver anything the user wanted, and had terrible performance. It's all because they took their eye off the ball of keeping it simple. It's because the software developers were clueless and everyone would be better off if they found a new profession.
I didn’t say you let users design the software. Software developers design the software. Users dictate the requirements, which is an entirely separate phase. You’re free to go back and forth with the customer on the requirements, but if the customer says they want features X, Y, and Z, you can either deliver it to them in the simplest and most effective way you see fit (that’s the design portion) or renegotiate the terms of the deal.
Users, for example, might want something so complex from a software perspective that it is impractical. You can go back and forth and say “well, if you want me to do this, then my development cycle is going to be extended, and it will cost $X dollars more than the original agreement.” I’m not saying the user designs the software, but if the user says I want the software to do X, Y, and Z and you as a software developer say I went ahead and didn’t include features X, Y, and Z so it would be simpler you wouldn’t be long employed.
Your Google and Yahoo! examples are noted, but you might also realize they don’t serve the same crowds. Google is almost exclusively a search engine whereas Yahoo! does much more than that.