Pros: allows you to drop it into a source tree (i.e. vendor it) without changing the build or adding a dependency.
The SDK should have minimal dependencies.
Exporters can bring in transport dependencies, e.g. Stackdriver exporter depends on gRPC.
Support both static linking and dynamic loading.
Dynamic loading is required because some vendors want to drop in their own implementation of the SDK. It also allows low-dependency builds.
This also requires a stable C++ ABI. There is quite a bit of interest in this.
This means STL types can't be used in the interface.