1. You're using Terraform already for resources outside of AWS (cdn, monitoring, dns, anything else) and want to stay with a common tech.
2. You're running into cases that CF doesn't support and have to generate your descriptions externally, or use sparkleformation hacks.
3. You want to manage a new AWS service. (CloudFormation support lags behind Terraform, new services don't get CF resources for months)