Most AUv3s require the main thread to be unblocked during creation, so I don’t think there’s much we can do about the message manager check.
The AudioPluginHost project calls findAllTypesForFile from a background thread and doesn’t crash when loading the built-in Apple AUs (at least, in the simulator), so I’d recommend taking another look at the crash you were seeing. It’s probably possible to debug your app so that it can also scan plugins from a background thread without crashing.
On desktop platforms, the plugin scanning would be handled by the known plugin list window. However, on iOS we use a simple slide-out menu instead, and this menu doesn’t include a button to rescan plugins (unlike the desktop window). It looks like the AUScanner is just used to automatically scan all plugins without needing to use a PluginListComponent.
So what does that mean in practise, for the thread to be unblocked? How should the application ensure that’s the case when creating instances of such plugins?