Specialization and competitive advantage are a thing.
Also, allocating 3% of my developers time is not super useful. That's less than 1 day a month per developer. Far better to allocate 1 developer for X time. By giving cash, you facilitate that for someone else. You could of course choose one person in your company to be that person and pay them directly, but thats hard for political reasons.
Maybe if you're a team of 30-40 people, you could pay one full time developer to work on a project of your choice, but of course that would mean that developer works mainly for the project of choice and not directly for your company's needs, even if your own bugs would take priority.
Or have two developers split time with the OSS project and your internal needs. That way you have resident experts in that OSS project and you're more flexible in meeting deadlines since you can shift time.
Also, allocating 3% of my developers time is not super useful. That's less than 1 day a month per developer. Far better to allocate 1 developer for X time. By giving cash, you facilitate that for someone else. You could of course choose one person in your company to be that person and pay them directly, but thats hard for political reasons.