I think Valere mentioned that if you manage at the feature level, you
can disable and then enable different versions of a feature and that
will unload and load different plugins. Take a look at
org.eclipse.update.standalone.EnableCommand and DisableCommand to
understand the programmatic interface that would work.
At a lower level, you can use the OSGi PackageAdmin service and the
BundleContext to dynamically load and unload plugins.