As identified, one of the major differences in GPLv3 vs GPLv2 is the handling of combined works and not just derived works.
I understood a derived work as a fork. Existing GPLv2 code modified to add or change functionality in that code was required to follow GPLv2 source availability upon distribution of the binary. There was the linking statically or dynamically issue.
Statically could be understood to be incorporating the linked code and therefore the linked code must also be GPLv2. Statically linked code is a form of a derived work. Dynamic linking not incorporating the linked code could not require the linked code to be GPLv2 even if the linked code in binary file was distributed with the GPLv2 binary which is a form of combined work.
GPLv3 extended the reach to combined work. Combined work could be interpreted to cover an entire distribution including closed source binaries distributed with the GPLv3 code.
Statically linked code simplifies the interaction of the code and has advantages because of that. There can be improved reliability, better performance, more efficient code execution, etc. Dynamically linked code can be more flexible, more memory efficient, and advantageous in other ways. Programmers have plenty of reasons to select static or dynamic linking not just licensing.
So I have to wonder where this leaves all these "Live" distributions which can boot from CD/DVD/USB and support a wide array of hardware with much closed source drivers?