The main reason is that Dbus is not available during early stages of boot. There are many others.
Varlink seems to be better or the same compared to dbus in all except two things:
- json doesn’t handle 64bit integers, it handles 52bit (or 54bit?) (size of mantissa for floats)
- you cannot (yet) list all things connected to the bus
Details here:
For what it’s worth, Kent said they plan to drop the experimental flag next year.