Phillip.
Primeiro que um plugin não é apenas um mecanismo de publicar eventos.
Um plugin é análogo a um EAR, com a diferença que um plugin é feito pensando em interagir com outros, enquanto um EAR é uma trolha monolítica.
Falando especificamente da stack OSGi. São 3 layers de recursos providos por um container OSGi.
1 - Modulos, define a política de classloading e visibilidade de classes entre plugins. Permite que plugins exportem classes que ficam visiveis aos demais, e que plugins definam qual o exato escopo de plugins visiveis que ele precisa. Isso evita JAR hell de você precisar de versões diferentes dos mesmos jars (já tentou groovy + hibernate) e usar gambiarras como o jarjar. Não tem nada parecido com isso no spring framework.
2 - Ciclo de vida, cada Bundle (termo p/ plugin no OSGi framework) possui um ciclo de vida próprio, ou seja, você pode instalar, remover, parar ou atualizar ele dinâmicamente. O spring framework depende de um modelo estático de classes e configuração.
3 - Registro de serviços, permite cooperação entre bundles levando em conta a dinamicidade do container OSGi. Esse é o aspecto mais próximo entre OSGi e spring. E ainda assim possuem diferenças bem grandes, por que o OSGi é voltado a permitir que bundles se comuniquem, enquando o spring é mais para objetos. O Spring é muito mais interessante neste aspecto.
O porém disso é que se você usar o container do Eclipse ganha de brinde a arquitetura de plugins dele, que é bárbara, que dá muito mais chão para criar aplicações grandes e controláveis.