As far as I know AsssetContainers are the most convenient way do to anything that you need.
They provide also a simple way to clone or instance loaded meshes with instantiateModelsToScene method - AssetContainer | Babylon.js Documentation
There (nearly) always is . You asked for the best (most integrated in a workflow method) and I believe the one given to you by @labris has been created just for that
With that said, you can import async and on demand any asset and through a function you can clone it, instance it and also dispose of it. Using instances, you would not dispose of your original mesh while it is still displayed in the scene in the form of instances, but you could make it !visible.
The matter is that except ‘meshes’ one may have other types of assets to load, like binary files, images etc. In this case AssetManager has all needed things to help, like success callbacks, error handling etc.
Docs - Asset Manager | Babylon.js Documentation