One thing to note here is the traditional model is:
Lorax(rpms) -> boot.iso ImageFactory(boot.iso, kickstart, rpms) -> cloud image
With Atomic image composes there is an intermediate step:
Lorax(rpms) -> boot.iso rpm-ostree(rpms, treefile) -> ostreerepo ImageFactory(boot.iso, kickstart, ostreerepo) -> cloud image
The model is the ostreerepo can be consumed by clients in the same way that RPMs can, but it means there's another step.