Unfortunately it seems a lot of library designers don't do it that way.
Indeed. I'm very familiar with this, because I've ported many of the widely used libraries to Teensy 3.1. Many of them access AVR timers, port registers, the SPI registers, and other hardware stuff. Porting them is a lot of work!
In a great number of cases, it's really not the library author's fault. Arduino simply doesn't provide functions for important features many libraries require.
For example, IRremote, VirtualWire, NewPing, SoftPWM and others require one of the timers to run an interrupt function at a regular interval. The timing is much too fast to depend on regular calls from loop(). Arduino has never provided anything like attachInterrupt() for timers. As a result, library authors who require an interrupt on a regular (short) interval have no choice but to access the hardware.