This saves one pointer indirection every time a device function is called from a device client handle. I have similar changes for other wrappers.
Is it somehow causing any actual problem?
I considered something like that when implementing PE separation and decided against it. It's essentially an opaque to feed PE side with information about Unix lib layout that it does not need to deal with. What's wrong with having a clear separation?