Drivers have to run fast and get access to driver memory without error checking (so it does faster processing)
There are lots of rules these drivers need to follow. If they do not follow all of the rules then a driver can corrupt memory areas the get assigned to another driver and can cause the other driver to crash. Windows, in a effort to make it harder for malware to hack the system loads the drivers in a different order on each boot up. This means that one bad driver gets to corrupt the data from the driver next to it and each time the system crashes a different driver can have its data corrupted.
Then next thing to know is that any driver that Microsoft pushes out via windows update will also be reported back to windows when it crashes and fixes will then be pushed to your machine if you have not disable windows error reporting. Over time the windows drivers get fixed and only the 3rd party drivers are left to cause the system crashes. With 3rd party drivers you are expected to figure out the cause, then find the 3rd party driver and install the fix from the vendor. This really never really works well and is why the blanket "update your motherboard drivers from the motherboard vendors website" is given, as a default answer. Mainly, since if someone figures out the driver, the only fix is to update the driver from the motherboard vendors website, or in some cases update the driver from the vendor of the software or disable the driver.
For most third party drivers you can run a tool called verifier.exe and make a setting to force error checking and it will bugcheck on these drivers to make it easier to find drivers that are not following the rules. Also, the rules change over time. For example, there is a game adapter driver that was written for windows 7, but now people run it on windows 10 but the rules changed and it corrupts memory on windows 10 or above. The rule was you put a 4 letter tag on your memory blocks so when your driver does something wrong everyone can look at the tag and know which driver to blame. Windows 7 this was a option, now it is required.
Also, now throw in sleep functions where a system can sleep for days. With windows 7 these were turned off by default. Now, these are turned on by default. So, when a driver corrupts memory, then you power down at night and reboot in the morning the process of corruption is not noticed. Now, the system sleeps and the corruption is stored and just grows until the system crashes at some time.
Memory compression is another reason, make a small corruption. later windows compresses the memory and swaps it to your pagefile.sys . Later rather than getting a clean copy of the driver, it gets the compressed image from pagefile.sys that has the corruption. This is why when you debug, you check for errors in the driver image against the real copy of the driver.
There are other reason for some of these failure popping up. for example usb devices used to be able to only mess up USB devices but now they are routed thru the PCI bus for high speed. Now usb devices can mess up anything like your GPU.
I have seen strange cases where a graphics card was waiting on a USB mouse. Move the mouse as fast as you can and the gpu driver bugchecked. The whole setup took a sequence of installs to create and a few mistakes but it can happen.
well this is some info, more than you wanted to know. In the end, a lot of guessing is involved in fixing these problems.