I delegate subdomains to other accounts from a top level account.
My first rule of thumb is to never have things like registered domain in templates that I plan on running much. I'll refer to said domains with remote state lookups or data queries in projects that I iterate on.
For this I'd create a template for your parent account and a template for the child accounts. I'd create workspaces on the child template to satisfy all the accounts that need to be setup (this is mainly to handle provider silliness in a DRY fashion).
In the parent account, I'd setup a registration for the main domain, then delegate authority for subdomains (like *.
dev.example.com) to specific name servers.
In the child accounts I'd create a route53 hosted zone with the domain that was delegated to it and ensure that the nameservers I use are the ones defined in the parent account.
From there, I'd do a data query or remote state lookup in any terraform project that used that domain, so it can inherit it without accidently modifying it.