Compose by design chose this approach based on the decade+ worth of experience of doing (or perhaps, trying to do) themeable components. Over the evolution of the design language (early days, gingerbread green, ics blue, kitkat grey, lollipop+ material) it turned out that it becomes more and more difficult to create a “canonical” set of components that can evolve their theming in a non-breaking way.
In addition, it’s not clear how to allow third-party developers to create their own simple and composite components that match that canonical set of components. And then, it’s not clear how to allow third-party theme developers to create skins that can be applied across the whole landscape of “canonical” and custom components.
Swing has tried to do that and failed. This is why you see Swing third-party libraries shipping not only with their own skins / themes, but also with their own additional components on top of what Swing provides, but only under the skins / themes from that particular library.
At least in the Swing land, nobody has been able to crack this problem of cleanly composing components and themes in a pluggable, many-to-many fashion.