it can happen that I have as much as 300 different ipv4's per 24 hours.
That sounds extreme. Have you really observed such frequent changes?
If your IPv4 address has been stable for a while (say an hour or so), then if it changes, it should be perfectly fine to send the update to HE immediately. If you can detect the change without communication outside of your network, there is no reason not to check for changes every minute and push the update as soon as it is detected.
If the IPv4 address keeps changing, you should probably start backing off and not try to update the tunnel on every change. Under such conditions I'd wait until the IPv4 address has been stable for a while before sending the next update. That's for automated changes. Having the ability to manually push the update in such cases at the click of a button would still make sense.
For how long a period the IPv4 address should stay the same before you consider it stable, and how many updates you will perform before you start backing off, depends on what kind of load you can put on the API. Sounds like you are really only using the API when there is an actual change, which means changes being pushed to the tunnel server. I'm not sure how often it is reasonable to push such changes. But I wouldn't push such changes too frequently, at some point pushing the changes will not make your tunnel more stable. I'd make sure the delay between successive updates is large enough to ensure you don't try to push another change before the previous one has taken effect.
Regardless of when you push changes, I think it would be very helpful to yourself, if you keep a log of when the IPv4 address changes.