My understanding is that if a smart contract consumes a library that only has internal functions, then the compiler will embed the library into the contract bytecode. At the lowest level, there is no use of DELEGATECALL - a call to an internal function of a library is a simple JUMP statement.
Conversely, if the library does have public/ external functions, the library has to be deployed separately.
At first glance, it seems that most libraries only contain internal functions:
What are the best use cases for a linked library?