That doesn't work. If you load application X which requires progdir:foo.library A and then start application Y which requires libs:foo.library B, application Y isn't going to work. The reason being that the request to open foo.library is going to note that it's already open and return the base pointer to it.
Contrast this to progdir:foo.so versus SObjs:foo.so. If the .so files are searched for in the same PROGDIR: > SOBJS: order, then both applications should run fine, each with it's own private copy of the library.
As the author of an OS3.0 "particularly well-coded program"

I am free to include any required library in PRODIR:libs/ under a different name such as ChaosFoo.library. Then everything is guaranteed to work.
I don't think I am currently doing this but I was forced to do it many years ago because sometimes a library evolves over time and becomes incompatible with different versions of itself.