The tradeoff is pretty obvious: on the one hand you get full control over what code you bring in, but you also get full responsibility of keeping it up to date and it does indeed take up more space. On the other hand you get systemwide updates, but also unpredictability which can break things.
In the former, you have a lot of work to do yourself to maintain your ecosystem between releases. In the latter, a greater amount of effort and responsibility goes onto those who maintain the packages at a distribution level to ensure mutually compatible package selections. This can be done (viz. most of the top tier distributions successfully doing this with occasional problems for decades) but we keep trying new all-in-one mechanisms every few years.
I'm not convinced that there's ever going to be a final answer to this, but it is clear that storage is cheap as chips...