with 8 servos:
20ms frame - 16ms pulsing leaves 4ms, 4 ms is 20% of 20 milliseconds.
I just wanted to pointing out that if you pulsed 12 servos by waiting for each pulse to finish you would have little time to do anything else.
Another issue with the sketch directly pulsing the servos is that it needs to be structured to service the servos every 20ms or so. As your code demonstrates, that can certainly be done, but for some it may be easier to only have to consider a servo when a new value needs to be written.
I also think that an advantage of a library is that it assists the grouping of the major systems of an application into separate components. This can make a complex application easier to understand, maintain and enhance because it reduces the likelihood of unintended interaction between components by providing a clear set of interfaces.
Anyway, good to read about your robot – have fun!