Why isn't xargs running one command per line for this use case?
I solved this myself with:

netstat -W | grep ec2 | cut -d " " -f 18 | sort -u | cut -d "." -f 1,2,3,4 | xargs -p -L 1 ping -c 10

It provides the expected eight calls to ping, one for each host found.

I think this solution works because the -L flag limits it to one line per command.