Cracks in a driveway may be caused by roots growing underneath the driveway and causing the ground to expand. They may also be caused by:
Subsidence and Overloading.
The holes (x2) and crack are a bit small in the image below, so they are highlighted in yellow
Roots (especially trees and large plants) tend to expand the surface around them as they grow, causing cracks. Or, the roots break down the surface causing holes.
In the case of large roots from trees or large bushes, the only way to repair this is to cut the root, or repair the driveway every time a crack starts to appear. You can either try and cut the root before it gets to the driveway, and then leave the root to decay, or dig the root up. Either way, the driveway will need a repair. You also need to consider:
What damage cutting the root may do to the plant or tree?