копипаст -- зло, как поддерживать в актуальном состоянии изменения во всех скопипастенных местах?
Вот тут мы и подходим к ключевому моменту - А ЗАЧЕМ? И вот здесь критерий отличия компонента в смысле компонентного программирования от элемента разработки.
Зачем Вам синхронно менять какой-нибудь алгоритм сортировки или поиска, или ещё чего-нибудь? Разумеется, мы предполагаем, что он был правилен (такие алгоритмы просто недопустимо писать неправильно).
Вы можете захотеть поменять его в одном из приложений-компонентов, под требования этого компонента. И он тут же перестанет быть таким же, как в других местах.
Это такая же разница, как между заменой электронного модуля на более совершенный или между идеей заменить все микросхемы в модуле, потому что появились более совершенные - второе просто не придёт в голову, да и невозможно.
Более того, такая невозможность - благо, если некоторый общего назначения алгоритм работает, зачем моей программе зависеть от каких-то его дальнейших изменений-усовершествований, мало ли.