Haskell dependencies need to be cached somehow
Different packages have same dependencies with different versions, however when building those packages all their dependencies are redownloaded from hackage and rebuilt again, making the entire build process extremely slower than it can be, especially at low network bandwidth, and it can be quite costly if connection to network itself is metered.
Having a template that simply adds those dependencies to $source solves the problem of redownloading.
Packaging every dependency individually solves both the problem of redownloading and the problem of rebuilding, which is especially important at laptops and hardware with little RAM and weak CPU.
Whatever of those solutions is used it's easier to decide on versions of dependencies by taking latest config from Stackage LTS, however, it means that GHC and libraries would be a little outdated, but at least it's stable and most of maintainance burden is on folks at Stackage, because every GHC release breaks backwards compatibility, even worse Haskell libraries themselves often break backwards compatibility, this is why Void Linux is still stuck at GHC 9.0.2.
EDIT: a little correction.