Large holders, companies/projects building on the chain, or open crowdfunds create programs to pay for development.
Example: Bitcoin.
Upsides: simple, decentralized.
Downsides: tragedy of the commons.
Foundation pays salaries and/or open bounties. Can be centralized (most common today) or decentralized.
Example: Ethereum.
Upsides: simple, expert curation in early days.
Downsides: limited bounties, runs out eventually.
Example: Decred. 10% of block rewards go to development fund, with staked voting on proposals for the fund.
Upsides: continuous funding source, decentralized.
Downsides: inflexible rate of funding.
Anyone can submit improvements. Token holders vote to approve/reject and decide bounty size. New tokens are minted to pay bounty.
Examples: Tezos, DFINITY (neither live)
Upsides: Very large potential bounties, flexible rate of funding, continuous funding source, decentralized.
Downsides: complicated, hard to prevent gaming of the system.