According to the Terraform docs,
If
nullableis false and the variable has a default value, then Terraform uses the default when a module input argument isnull.
Adding nullable=false to your module variables ensures that modue defaults are used, not provider defaults. Tested and confirmed. Arguably slightly counterintuative but it works.
Thanks to Greg Hensley for this one.