I just remembered *one* of the reasons Xyce is distributed that way.
The Xyce team uses the Intel C++ compiler to build Xyce, because at one time it was determined that compiler produced better-optimized code. This compiler costs real money to use if you don't work somewhere where they have site licenses.
Building plugins requires that you use the same compiler to build the plugin that you used to build the code itself (or rather, buildxyceplugin *expects* to be able to build the plugin with that same compiler). Thus, if we distributed the shared library version you *still* couldn't use the buildxyceplugin script unless you *also* had the Intel compiler.
Sometime in 2022 I spent time trying to update the Xyce binary packaging system to make it *possible* to distribute a GCC-compiled shared build so that ordinary RHEL users could use the plugin system (if you poke around in the git history of the "distribution" directory you can see signs of that work). While that actually made it possible to bundle up the code of a shared build into an RPM, it didn't work for a number of reasons, including the fact Trilinos had started requiring a compiler that fully implemented C++11, and RHEL7 bundled a version of GCC that was too old to use. One had to use the Red Hat "development tools" to obtain a less ancient version of GCC, but then we're back to the same problem --- a user outside Sandia would then not be able to use the plugin build system unless they *also* had paid for the development tools subscription, which we couldn't count on.
So in the end, we just kept distributing static builds that work but don't include a usable plugin system.