The most common cause for server crashes that we see is faulty memory. This typically results in Kernel Panics at random intervals.
The most common reason we see for servers going offline, while not technically crashed, is server misconfiguration; most commonly setting up MySQL or Apache to use more RAM than is available. The server will start using swap memory until it runs out and then it'll start giving out OOM errors. The server will technically still be up, and respond to requests even if ultra-slowly. This typically results in an endless cycle as the server is so slow that there will always be more requests coming in than it can handle.
Other not-so-typical crashes are due to bugs in the kernel, running of binaries that aren't mean for your OS, memory leaks allowed to be run for long enough to get all the RAM used, kernel/OS exploits.
In most cases though, a well maintained server that is properly configured can run for years without ever going down other than for kernel updates. Some servers that have limited functionality can be left running old kernels since there's barely anything on it, limiting access to and from it anyways so they can literally stay up for years.