This is an unusual case but worth defending against:
If a user submits many posts in a short period of time (perhaps with XML-RPC), the cron array can fill up with a backlog of do_pings events. Since do_pings operates on all posts, there's no reason to have more than one of these events scheduled.
The enclosed patch changes wp_schedule_single_event() to ignore new events if there is already an identical event scheduled within 10 minutes of the new one. (It also handles the case where there's a backlog of events with timestamps in the past). The hook and args must be identical for it to be skipped. 10 minutes is arbitrary but seems reasonable; it could be an external define if there's a need to change it.