This from Glenn Greenwald:
As it turns out, the South Carolina polls were even more inaccurate than the New Hampshire polls were, though that fact hasn’t received much attention because predicting the wrong winner (as the New Hampshire polls did) is a far more dramatic error than under-predicting the winner’s ultimate margin of victory (as the South Carolina polls did). But, mathematically speaking, the magnitude of the polling error is actually greater in South Carolina.
The average of the pre-New Hampshire polls showed Obama with an 8 point lead, and Clinton won by almost 3 points — a difference of 11 points. By contrast, the average of the pre-South Carolina polls showed Obama with an 11 point lead, and he won by 28 points — a difference of 17 points.
Greenwald thinks it was the racial campaigning by Bill Clinton that gave Obama the last-minute surge, just as it was the negative treatment by the press that gave Hillary her come from behind victory in New Hampshire.