Disclaimer: My BSD knowledge approaches zero. I probably would get around the basics with some googling but I've never actively used it.
From my understanding BSD Jails share a lot in common with solaris zones, it would be good to explore how far the overlap is and what tools exist.
For OmniOS (I think this might be comparable as the vmadm tool isn't present there either) the approach was/is to mimic the very basic zone creation to emulate the behaviour of vmadm. This also introduced the logic of handling commands in different OS types (i.e. starting a zone and stopping a vm work differently in SmartOS/OmniOS so the abstraction layer exists already)
First step is mapping the basics:
I’ve taken a short look at the iocage manuals  and think for to start it’s
best to just use dummy datasets (and with full jails and perhaps clones
as a second step) to see if we can get that working well enough.
from my understanding things map:
iocage list -> list jails
iocage start -> starts a jail
iocage stop -> stops a jail
iocage restart -> restarts a jail
iocage get -> gets details
what I’m still a bit unclear of and the manual pages didn’t get into very
much (or I missed it) is the whole process of creating/configuring a
jail, what options are available and how to create a new zone with them
basically the equivalent of vmadm create -f <file> (in SmartOS) or
zoneconf (in OmniOS/vanilla Solaris). From the manual I gather they
might be described in more details in the man pages?