I think falling back to the default instance is reasonable if the given template does not exist.
Template name will often be generated from some expression and I would prefer if nothing is created when such template doesn't exist. In many cases this will be less harmful than creating the wrong default instance. Here is an example:
Maybe as an alternative solution you could add some method to check if a template with the given name exists? Say, a System condition. And also an expression to get the template name of the created instance? (so that I could immediately destroy it if it's wrong)