On a host that supports both IPv4 and IPv6 getaddrinfo() returns socket addresses for both the IPv4 and IPv6 "any-interface" address, and may do so in either order.  If the host also enables the feature that maps IPv4 addresses to a block of IPv6 addresses, then once the wildcard IPv4 address is bound attempts to bind the IPv6 one fail because doing so would conflict with the existing IPv4 socket.  Consequently, the server cannot be contacted on IPv6.  (If IPv6 was bound first, the IPv4 would probably also fail but that wouldn't impact connectivity, just produce an annoying and misleading message.)

By restricting the IPv6 bind to only accept IPv6 connections, the conflict is resolved and the server correctly listens on dedicated IPv4 and IPv6 sockets.

Most of my "big machine" hosts where rrdcached and collected run are now IPv6, while I have some embedded devices that are IPv4 only, so I need it to listen on both.  (I also have multiple internal IPv6 subnets so the wildcard listen option makes cross-machine configuration so much simpler.)

I didn't really want to fill the source with all the details on that; the comment is intended to be enough to give a hint to somebody who runs into trouble in that area.  Now there's extra info here, which is another source of history.