Which one is the best?

There is no such thing as "which is the best", since all depend on something else that is far away from the self. The best is what sweet you better, while that depend on how you organize data and how you see logic in the avaiable formulas that were developed to manage what is fake, while being non-fake. I mean, Virtualization is an emulation and all emulation are not real, as real, physic machines are. Anyway, emulation can be awesome, if you don't wish to invest in several hardware, to create dedicated machines for some specific solutions that you may need. For example, in this particular specification of mine, I would need at least 4 dedicated machines to talk with each others, while being in different network classes. To define them into different IP classes is an option, and this can be useful for big companies, that need to have new "computers" to test or develop new applications. I am not a company and I don't need to test in a recursive way all the details of the service I wish to give to users, but I like to think about that possibility, that is false, and emulate that possibility as reality. So, since BSD systems use Jails or VMs, which are more or less the same in the main objective, I will dive into what makes each, different from the other.

Beside what we can do with this emulations, in FreeBSD using Jails, we know that this machines will use FreeBSD too. They share the same kernel and with that in mind, all jails will use FreeBSD. In another hand, we have OpenBSD, which use VMs. I didn't test and explore much about this, but it looks like I can create a full isolation, including Operation System and Kernel. With VMs in openBSD, It looks like KVMs or QEMU, which we can install a dedicated Operating System with all technical details we may need. Resource sharing is in how much memory/cpu/disk, we will use for each specific virtual-host, that each can manage with their own limitations.

Docker is another way to isolate applications, while Docker have some security issues too, which can interfere with the main host, like ThinJails do in FreeBSD.

The process of creating Jails needs our hands to produce all details, while VMs is the same. We need to specify all parameters we will use, and with those, we start our virtual-hosts. QEMU and KVM, work like VMs, since we need to create a filesystem for each virtual-machine. Not the same for FreeBSD jail? Evem if is recommended that we create a zpool partition to manage our jails, I don't know if the creating of that "partition in ZFS" is really needed, but I admit that ZFS change how I see FileSystem-partitions, which is somehow confusing to me, if I don't understand that it's propose is to create snapshots of content, to be possible to recover or backup, like the BTRFS is used for in some Linux distros.

I am going to test all this differences using the same network structure, to be possible for me, to understand the differences between Jails and VMs, in performance and resources consuming. Since we can specify how much memory each machine can use and how many CPUs each machine can use, maybe there is no obvious difference, but that is my goal for the next days.

Have fun testing reality, since reality have fun testing you.