Well, code is just documentation that can be read and interpreted/executed by a machine. Dynamic documentation.
So, an SDK is essentially documentation of one project team's "best practice for implementation" of a particular NIP.
It's more reusable than a mere implementation in a larger application because it's "Just the NIP, sir".