I think falling back to the default instance is reasonable if the given template does not exist. Construct's design tends to be forgiving and try to do the right thing anyway even if invalid parameters are specified. Simply not doing something can itself be confusing, and end up in bug reports like "why isn't anything created?", and cause refactoring problems like if you delete/rename a template, then suddenly no objects are being created any more, which could well be worse than falling back to default parameters.
Even with layers, IIRC if you specify a layer number instead of a layer name, it will clamp the number to the available layers and always create an instance. It's only if you specify a name and the name doesn't exist that it finally gives up as there isn't anything else reasonable it can do.
I think a better approach might be some kind of warning if you specify a template that doesn't exist. That could apply to an invalid layer name too (although that is harder to verify as it depends on the associated layout, which depends on event sheet includes).