The methods for refusing spam mail at SMTP time have their problems. They tend to be one-size-fits-all solutions; if you block mail at that level, then it's blocked for all your users. Often a site does not send only spam, but blocking rejects all mail from that site, including the non-spam.
Spam filtering tries to sort spam from non-spam by analyzing incoming messages and instead of refusing them, delivering the spam and the non-spam to different places.
This can have some significant advantages from a user perspective -- mail that was wrongly identified as spam may still be accessible, there are a lot more opportunities for user customization, and the current crop of filtering products include adaptive methods that use statisical analysis of spam content to attempt to identify spam based on the user's perception of what he or she considers to be spam.
Filtering, however, is not without its drawbacks. From a system administrator's perspective, the major problem with filtering is that it can substantially increase the resources needed to deliver mail -- sometimes by orders of magnitude. Customization methods for filter products often become complicated. The exact behavior of some filtering products can also be rather hard to predict, as they tend to use either a large set of heuristics or per-user statistical profiles.
The success of filtering, however, has made its mark on spam -- spammers now routinely use various kinds of creative spelling and obfuscation to evade filtering, such as inserting random punctuation into words that would otherwise trigger filters, adding blocks of random text to confuse the statistical filters, etc.