Arp cache poisoning is a valid attack vector but you can create bottlenecks on the network that can bring it down. So long as the client is aware of the potential consequences of the attack and you have documented the servers/hosts that you are targeting with the attack. You might not want to poison an entire subnet but only focus on a few targets so that any impact is limited.
Is there a better way? Can you effectively sniff traffic from a switched network without ARP poisoning?
Yes. DTP (Dynamic Trunking Protocol) attacks and others can enable you to sniff all traffic on a switch by enabling trunking on your port.
Yersinia can simplyfy these attacks for you or you can craft the packets in scapy.
dean