The shared library model ensures (at least for C/C++) that if a bug has been found and fixed in certain library, all packages that depend on it will take advantage of that bug fix. Imagine how many packages would need a rebuild if let's say the openssl package has been updated by the vendor and openssl has been linked statically into applicatons. Using the shared library model eliminates the need for rebuilding all packages that depend on a given library, if the given library has been updated.