I would say it is still a common pattern. I don't see how workspaces really improves anything. The fundamental problem with Terraform is it lacks if statements. There are solutions that involve dynamic blocks and for_each, but I don't think they completely solve the problem. I would say they don't have great readability.
I would love to hear a reasonable way to not snowflake that doesn't dive down the dynamic hole.
Overall I think this is all an argument for Pulumi over Terraform.