O MaaS / juju permite utilizar o hardware que você tem um por um, enquanto o openstack (isso é simplificação excessiva) também permite construir máquinas virtuais (geralmente kvm guest), que em muitos casos melhoram significativamente a utilização do hardware físico.
Além disso, o openstack oferece o seguinte:
- Ele fornece um portal de autoatendimento em que os usuários finais (não os administradores de sistema) podem provisionar recursos com facilidade - máquinas virtuais, redes (particulares), armazenamento
- Permite medir o uso (e, como resultado, cobrar ou cobrar aos usuários)
- Permite que você tire instantâneos, crie novas máquinas virtuais a partir de instantâneos, etc.
- Ele oferece vários serviços adicionais para o provisionamento de aplicativos, como a criação de clusters de hadoop, o provisionamento baseado em modelos, o provisionamento de bancos de dados.
- Na verdade, ele pode gerenciar contêineres bare metal, kvm, xen, vmware e docker a partir da mesma interface.
EDIT: Provavelmente o aspecto mais diferenciado que eu faltei em mencionar pela primeira vez é o modelo multi-tenancy. Mesmo que a openstack seja implantada como uma nuvem privada, você pode ter inquilinos separados para diferentes divisões / departamentos da entidade e os usuários de um inquilino não terão acesso a recursos alocados a um inquilino diferente.
Esta não é uma resposta exaustiva, apenas uma visão geral de alto nível.