The avahi USE flag in that cups ebuild is broken and misused.
Misused because it states there's a dependency over either avahi or
mDNSResponder, so it's not *AVAHI* code that gets enabled, but *ZeroConf* code
(there's a zeroconf USE flag for that). Plus the dependency as is will skip
over mdns even if requested because avahi can be installed (and usually is)
without mdnsresponder-compat. In my case I didn't have mDNSResponder installed
either, but the dependency was still satisfied. The result is a cups with no
mdns support after building it with avahi USE flag enabled.
The solution is to replace the current avahi useflag with zeroconf, and then
add avahi as addition: when avahi is enabled avahi is dependend upon, and then
during pkg_setup there is a built_with_use check for mdnsresponder-compat; when
avahi is disabled, mDNSResponder is dependend upon. This results in a working
ebuild.
Ah, and you need at least for avahi to depend on avahi-daemon when you enable
it, which is another reason why || ( ) dependencies are NO-NO in this case.
Feel free to look at pulseaudio init script to get a way to make init script
dependencies conditional.