It appears that many IoT devices these days are getting around this somehow. All the smart plugs, lights, etc. I've recently purchased can be updated pretty much instantly from anywhere without any need to mess with the router's setting.
How exactly are they doing it? Is the device polling its server every few seconds to check if it has any new command? Wouldn't that overload their web server real quick if all devices deployed did that?
By way of comparison, I have an active IoT project - https://foundrytechnologies.com/relay.php. It's an IoT display capable of showing text and pictures, and there are several of these deployed now. The way they work is by polling the server every 5 minutes to see if there's any new message/picture to show. Instant updates (or almost instant) would of course be nice if that were possible - without placing excessive load on the server.