One obvious reason is that big companies tend to pay better salaries. I never know whether it is true, but I personally feel this is because the hiring managers and human resource managers do not own the companies and hence are more generous. Especially to managers, a competent employee means less work for themselves and better performance of the whole team, which means they will have a better chance to get recognized from their own managers and consequently get promoted or enjoy a better bonus. Meanwhile the higher salary of their team is nothing to do with their own income and there is no downside of it at all.
Though some managers control budget and they own the companies money to some extent, but the money saved has to stay in the team and would never go to their own salary. Of course they definitely cannot spend money without any rules, but they are restricted by companies' policies rather than motivated by their own interests.
In contrast, for small companies it's a totally different story. In small companies, funding is normally controlled by the owners. To them, every cent saved would be part of their own income. As a result, it's not surprising that they are reluctant to pay except the role is crucial to the revenue of the company. Furthermore, in many cases, they don't even need the best person. They're satisfied as long as the functionality can still proceed and complete routine errands.