Libvirt is also responsible for keeping the guest exactly the same after upgrades; a basic QEMU command line does not guarantee that the guest hardware remains the same when you upgrade to a newer version, while Libvirt uses the more complicated and less human-friendly options to ensure that.
Libvirt does a lot more for QEMU than for other hypervisors, so much that libvirtd's initial name was qemud.
Libvirt does a lot more for QEMU than for other hypervisors, so much that libvirtd's initial name was qemud.