I prefer `providers` for code that implements a given service, and `plugins` for add-on (possibly 3rd party) components that can potentially be installed dynamically (e.g. the way you can implement Jenkins plugins).

A plugin may implement one or more providers (e.g. a Github/Bitbucket plugin may implement some source control features plus some planning features - via its support for issues, plus some team information provider, if we ever support that...).