My 2 cents. At a high-level I think Crossplane has a different agenda than Atlantis.
Atlantis democratizes infrastructure-as-code — you can allow anyone to create MRs or PRs, even against production. And it can be a Terraform module they developed themselves, or grabbed off the shelf. Out of all the tools I have experienced throughout my career, Atlantis is the closest to the embodiment of the DevOps culture — you can let developers fully own their own infrastructure and still have a “veto right”. They don’t always love it, but Atlantis is a way out of the development team coming to the infrastructure in the 11th hour and saying “if you don’t create this infra for me, the release will be missed — and I’m not too sure what the requirements are, but we’ll figure that out in a few iterations”.
Crossplane requires Kubernetes knowledge, and on some teams that may be well within the are of expertise of developers. That may not be a typical case however, although DevOps has been around for a while, it is still just a new way to call the ops team in many instances, and developers just want to develop without getting their hands dirty with infrastructure code. Unless you have a development team proficient at curating CRDs, Crossplane shifts some infra tasks back to a team which specializes in Kubernetes and CRDs. That is true to some extent with Atlantis and Terraform as well, but I think the barrier to entry with Terraform is lower than that with CRDs in Kubernetes (and especially true when using Terragrunt, where the Terraform logic is abstracted away from developers).