This idea could address the "wants" from multiple other ideas:
Reserve IP Addresses / Make sure we can keep an IP if we recreate a droplet.
More IPv4 addresses
Currently when you create a resource with a public IP, you are given a public IP for that resource and a private IP if you opt for private networking.
1) From a security standpoint, we may not want all of our resources to have a public ip address.
2) People like myself are conscious about conserving ipv4 addresses since they are becoming so limited. Ipv6 cannot come quickly enough! People like myself might want to willingly give up our public IP addresses so they aren't being wasted.
3) More flexibility with IP addresses would be nice. For example, what if we could have some instances that are private-only and have no public IP, and have some instances with multiple public IP addresses?
The multi-part solution:
1) Make public IP addresses optional on all resources that would normally have a public IP (droplets, load balancers, managed databases, kubernetes clusters, etc).
2) At the account level, you are allowed to have 1 floating IP for every instance you have online plus some extra. The "some extra" is for the case where an account might need more than 1 public IP for a particular instance. I believe we're currently allowed 3 floating IPs per account. So if you had 10 droplets, you would have 10 public IPs and would be allowed to pay extra for up to 3 more.
3) Allow users to "give up" their unused floating IPs. If you give up a floating IP, you can request a new floating ip for free. The only time you pay extra for a floating IP is if the number of floating IPs exceeds the number of droplet/resource instances you have on your account.
4) If you destroy one of your droplets or other instances, prompt the user to select a floating ip to give up. If the droplet or other resource being destroyed still has a public IP assigned, then that would be the default option if the user doesn't make a selection. Additionally, the user could be given the option to not give up any of their floating IPs, but consequently be charged extra per month. If the user already has too many floating IPs on their account, then force them to select one to give up in order to destroy the resource.