When creating VPC attachment in TGW, one step is:
For Subnet IDs, select one subnet for each Availability Zone to be used by the transit gateway to route traffic. You must select at least one subnet. You can select only one subnet per Availability Zone.
AWS autoselect 3 random subnets (like DMZ-A+ APP-B+ DATA-C)
I always change to select: APP-A + APP-B + APP-C
Is there any recommendation ? best practice ?
using different subnet types (dmz and/or app and/or data) seems the worst choice.
AWS best practice is to create a separate subnet in each AZ for the transit gateway attachments.
I can tell you from experience that if you don't do this routing and NACLs can get fiddly and work in ways you don't expect. For example from here: