Если один пакет требует jquery@2.1, а другой jquery@2.2, то есть два варианта действия.
npm скажет -- да чувак, хз что они там наколбасили, semver никто не соблюдает, давай каждому пакету дадим свою версию, места на винте много.
bower скажет -- ну мы же не можем два раза отдавать клиенту jquery, правда? Да и вместе эти плагины не будут работать, они получат разные инстансы jquery. Я тут подумал и решил, давай поставим 2.2, но ты смотри там, могут быть несовместимости.
В общем, многие используют npm и брат жив -- без jquery и кучи говноплагинов требующих разные версии, проблем, как описано выше, обычно нету. Опять же один пакетный менеджер удобнее, чем два.
С другой стороны, многие люди считают образ действий npm неприемлемым и настаивают, что на фронтенде только bower. И ничего, опять-таки проекты живы и развиваются.
P.S. есть еще jspm, работает подобно bower, но может использоваться и вместо npm на серверной стороне. Мне не понравилось, но есть плюсы -- интеграция с systemjs и опять же один пакетный менеджер на проект.