For what purpose did you introduce an additional entity for creating workspaces through the command line if you could use the tfvars file naming for naming workspaces? This would solve the problems people see in workspaces.
What I mean:
terraform apply
== uses terraform.tfvars
and default
workspace
terraform apply -var-file=dev.tfvars
== terraform workspace select dev
and terraform workspace new dev
if dev workspace doesn’t exist
terraform apply -var-file=prod.tfvars
== terraform workspace select prod
and terraform workspace new prod
if prod workspace doesn’t exist
etc.
This allows you to use declarativeness in your code and not in your head.