Another reason to avoid abstraction layers like these is that it helps the evolution of both the kernel and the driver.
Without an abstraction layer padding things, you can compare the "shape" of the API desired by the driver with the "shape" of the API as given by the kernel, and see if they have a good "fit" (picture puzzle pieces trying to fit together). Places where both sides are not fitting together very well point to things which need to be changed either in the kernel or in the driver (or in both).
With an abstraction layer, the temptation is to just add more padding instead of adjusting both sides of the API. Given enough time, you will end up buried in foam.