My use case is rather specific (web development) and my recommendation is of course not intended to cover all possible use cases. However, if you’re working on web projects and need VMs to isolate your development toolset then this is the approach I choose after years of experimentation.
If it's a database or otherwise expensive to recreate file (like a certificate that's subject to renewal rate limits) keep it somewhere you can get to it if the VM needs recreated. Typically this is a mounted volume on a SAN in larger self-hosted environments.