Eu normalmente não suporto muitas distros em minhas próprias receitas, mas ao ler outras receitas (como no Opscode) eu geralmente aprecio abordagens semelhantes à sua segunda, acima, a principal diferença é que eu tenderia a invocar explicitamente o recurso diretamente, em vez de compilar uma matriz.
case node[:platform]
when "centos","redhat","fedora"
package 'net-snmp'
else
package 'snmpd'
end
No entanto, existem vários prós e contras para cada caso, dependendo do que exatamente você está tentando expressar.