There is no “perfect” care-free setup for any complex application. Maybe you want to take a look at 101: Self-hosting information for beginners..
Many technologies like Snap, AiO, NCP, VM exist with the aim to help user to overcome the complexity.. but there is no free beer - each of the projects takes away complexity in one place but adds complexity in another place. AIO, snap and docker have high abstraction level so dependencies like php version are easier to manage than in bare-metal but you need to learn and understand “another” technology which is more or less a problem depending on previous knowledge and your goals. e.g. if you know docker or snap already - take the road.
IMO you focus too hard on specific hardware. I’m into Docker so I only can tell for this technology for sure but I assume it applies to VMs, LXC and snap as well - it is possible to connect host storage located on ZFS as “bind mount” into the container - I do in my installation only for data and config (application and config lives inside of the container stored on ext4). at the end you should make each decision for a reason - ZFS “itself” doesn’t give you any dis/-advantage. if you plan to use some specific ZFS features like snapshots or replication - analyze and TEST how it works in the whole application context - e.g. if snapshots cover the full application (configs and database) or maybe there are issues like database file is stored in a broken state? each technology should exist for some reason - e.g. to prevent data loss you can run replication or backup. each has advantages and drawback and you should understand both and use the one which fits your needs. another recommendation: 101: backup what and why (not how) - it’s not exactly about your question but I think it helps your to find the right path.