The Unix model does not link the two together - where for most hardware the two are inseparable. A sound card can only work on certain formats of data - it is more than mere bytes. It may have only limited processing ability (e.g. an EQ functionality or FM synthesizer). Ioctls are a hack around this - and of course they do "work" but they are not clean. They are also clearly not congruent with the Unix philosophy, you can't cleanly chain and pipe them or compose them into a larger whole.
NT did much better on this front, but much of the beauty is hidden by the horrid win32 layered on top. Cocoa is much nicer and probably the best real world example of how nice it can be when done right. You can use the UNIX APIs on a mac, but why would you want to?