Libvirt client communicates with the libvirt daemon via our RPC system. The messages have limit for maximum size in order to prevent memory exhaustion. Whenever the daemon was about to receive a message it had to allocate memory up to the limit. So blind lifting of limit would cause libvirtd to be more memory hungry.
The limit was 65536 bytes (including libvirt headers). This wasn't enough for some big XMLs and hence big messages were dropped leaving client unable to fetch useful data.
The buffer for incoming messages was made dynamic. Usually, messages are small enough so there is no need to allocate 64KB buffer for them. This allows us to size up the limit (up to 1MB) without making libvirtd use more memory than is really needed.
Libvirt is able to send bigger messages and hence fetch much more data.