I don't think I agree anymore; most of what I'd get done with Ansible now I'd do with a container, and if all you need to get done on the host is networking and a reasonable Docker setup, Terraform is good enough to get that done. I'm a lot less likely to ever use Ansible now.
But, I mean, the answer to the question above is easy. :)
ansible can be used to build container images in an idempotent way. And ansible is greatat creating deployment logic among other things. Where puppet , chef et al. are primarily for automating a direct machine, Ansible is a general purpose automation framework. Terraform is definitely better at provisioning cloud resources, but Ansible is much better at automating pretty much anything else that you could think of.
Isn't there a a chicken and egg problem with Crossplane? A quick glance over the docs tells me I need a cluster to already exist. So how am I provisioning that cluster? Terraform.