There is another possibility to pin an instance : if the user attaches it to a volume and if cross_az_attach config option is set to False (default being True), then the instance is pinned to the volume AZ at the creation time.
I _think_ this is only true, if Volume was created in advance, but not during the instance creation process. As then request_specs are processed before volume is present, meaning that instance is not pinned to AZ anyway. At least, what was written in the bug report, unless smth changed in Dalmatian.
I hear your thoughts on having a UX being "default to a random zone of from a list", this could be a blueprint and IMHO we wouldn't need to add a microversion as this is not a new API behaviour. That said, let's discuss this if you want at some meeting. For your own cloud, well, indeed you only have to use different values for default_schedule_zone (that's a nova-api configuration option, so every API service could use a different value) for the moment.
-Sylvain