I love Digital Ocean, but they do the same thing with their API. I wrote to them about it years ago, even talked to some developers there, and the general explanation is the same: Screw around with cloud-init to get the public key.
If you use the DO API to provision servers my feature request is here:
https://digitalocean.uservoice.com/forums/136585-digitalocea...
Please upvote it or at the very least copy the cloud-init script to help provision your servers.