My question is why doesn't the host name change automatically? What would stop a few lines of code checking the system's host name at system start to determine if a host name has changed? It is safe to assume to check during start up since one cannot change a host name without rebooting.
It is not clear that the hostname value is what you'd necessarily want to use as a default hostname. For example, hostname my return a fully-qualifed name, and you might prefer a short name, or vice versa. Or hostname may return the hostname of a network interface other than the one you prefer the machine to be known by.