Having work at both styles of companies, in my opinion you really want a mix of both. Top-down decision-making is great! It allows your engineers to be engineers, cranking out good code and not "thinking up the stack" and worrying about the business logic. On the other hand, when engineers see a problem area, or see a feature that could be implemented in another way, you absolutely must stop everything and listen to them. This is a rare occurrence and they usually know what they're talking about.
If your engineers are not involved on the business side, they basically have no clue about who the customer is, how the user use the software, what problems they bump into etc. In the bigger companies I worked, engineers never even seen a customer or user.
A vision needs to flow top-down, but if you want your engineers to make helpful suggestions, they need to be involved on the business and customer side from day 1.