Os plugins são onipresentes, pois é possível modificar / substituir o comportamento de qualquer método público no sistema. As personalizações devem ser feitas usando plug-ins para métodos / classes públicos marcados com @apianotação (API pública estável) sempre que possível. Essa abordagem garante que a personalização permaneça funcional após os novos lançamentos do Magento. Além dos before/ afterplugins mencionados na pergunta, é possível criar aroundplugins para substituir o comportamento original.
Por outro lado, os observadores são um mecanismo de extensão herdado herdado do Magento 1, é bastante limitado e deve ser evitado, se possível. No entanto, diferentemente dos plug-ins, eles podem fornecer pontos de extensão dentro de métodos protegidos / privados.