Rather than lumping more established companies into one bucket, realize that your experience at a large company is going to be determined by the team you are in and the managers who dictate the fate of your group. If the goals of your team and it's place in the company are aligned with what you want you will be fine. Otherwise you'll be unsatisfied.
With a small startup it's probably easier to see what you are going to get before you accept the offer. It may be easier to avoid jobs which are a bad fit since small startups may be less obfuscated than large companies.
Also realize there are plenty of large non-tech companies that hire tech people. These companies don't pay the salaries or provide the perks you see at large tech companies. But they may offer solid 9-5 jobs in locations with reasonable costs of living.
Bad management, politics, and bureaucracy will probably damage the motivation of somebody who actually cares about their work and wants to do a good job. I suspect you'll see more of this at large companies as opposed to startups, but there are probably plenty of startups (I worked at one) that have this issues. Many people don't seem to care about these things so this stuff matters less to them - they do their jobs and go home.