IPv4 blocks are expensive. If you’re not paying for them directly, then your service provider is paying for them and passing the cost on to you.
Source: https://auctions.ipv4.global/prior-sales
So a /16 (like a cloud provider would be buying) is $3.5M USD right now.
Some providers rent their ipv4 blocks rather than purchase them, because the smallest volume you can buy in is 1024 addresses which is pretty expensive, especially for newcomers. In that case there would be an ongoing cost.