Как вы сказали, минусы слабосвязанного кода - повышенная сложность, и ее трудно понять. Обычно не сразу видно, что делает код, когда он слабо связан.
Как и другие говорили: выгода в том, что гораздо проще менять другие части кода / модули / объекты / компоненты, когда эти части не зависят друг от друга.
Как и во всех ОО-разработках, вы должны сделать компромиссы - для вас важнее иметь высокомодульный код, который легко менять и вставлять? Или важнее иметь легко понятный код, который проще? Вам придется решить это.