My gut feeling is that Go is the right answer here, not because of timing (1s only on updates isn’t much), but because we have good processes and practices around it already, and it’s also slightly safer to use it in this context (no runtime dependencies, etc).
Also, this would mean reusing code between snapd and the hook, which we know is useful. Just a few days ago we were discussing how to validate the scheduling option. It would be trivial to do without duplication if we had it in Go.
In terms of how to do that, I suggest shipping the hook with snapd proper, perhaps as an implementation detail of snapctl. So the hook becomes just a shell script that calls that one command, and then there’s really nothing else to worry about in terms of when to update, how to build and bundle the hook for the proper architecture, etc.
How does that sound?