You are correct that one of the best practices for Terraform development is to organize code into reusable modules to avoid duplicating code across different environments. Terraform modules allow you to create reusable and shareable packages of Terraform configuration that can be used across different projects and environments.
While Terraform modules are a key aspect of Terraform development best practices, I did not mean to suggest that duplicating code per environment is the primary difference between Terraform and Terragrunt. Terragrunt is a Terraform wrapper that provides additional features such as remote state management, easy configuration inheritance, and automated Terraform version management.