Aside from maintenance and upgrades there are other considerations too. There are some systems running full tilt 24/7 but generally they will have redundancy built in so that they can take individual machines offline for maintenance and upgrades. But that is really for systems that actually are accessible 24/7 and may have a global user base. Can you imagine if google went down at 1am for a regular update to a server? Closer to ordinary businesses, quite a lot of systems running 24/7 will have some form of batch work that needs to be factored in. Jobs that perhaps cannot safely be run during the day while users are in. Jobs that are resource intensive and need bandwidth, time or processing power to run. Jobs that are time dependent, dependent on third-party systems or dependent on the receipt of specific, discrete feeds. All of these tend to be run "overnight". The system may be running 24/7 but that doesn't mean it is doing the same thing for all those hours. And you also have to consider that there may be a manual operation involved too.