This was due to the master controller using update_powered_status() instead of power_change(), but many machines override power_change() to do various things when the machine gains or loses power.