Hopefully, my short memory serves me well, so I don't fall too far from the mark.
Harddrives are not perfect. No harddrive is. Every harddrive comes out of the manufacturing process with
some flaws on its platters. "But," you say, "no bad sectors show up when I run scandisk." True, but that's not how it always used to be.
In the old days (1970s, 1980s? I wouldn't know.

), harddrives came with a list of addresses. Before shipping the drives out, the manufaturers tested them for bad sectors, listing the addresses of the sectors that failed the test on a sticker on the drive['s box?]. Why would they do that? In those days, you had to manually enter all the addresses into the BIOS (Could be wrong, could be some specific program, or the OS itself) so that the computer knew not to use those areas of the drive. Of course, the shorter the list of addresses, the more availible space on a specific drive. This resulted in those drives with the shortest lists being the most desirable.
Then, someone somewhere had a really good idea. Instead of having the user do all the work of handling the bad sectors, they built this functionality into the electronics on the drive itself. That way, there was no need to print out lists, and have people enter it by hand. However, if the drive is marking sectors bad behind the scenes, the availible space becomes less. So two drives of the same 20MB model might come out having 19.964MB and 19.752MB of storage space respectively. Of course, this could prove confusing to less experienced users.
For this reason, drives were given a small cache of space that you cannot [normally?] access. Any time the drive marks a sector as bad, it internally redirects its address to a sector in the cache. That way, all 20MB drives would have 20MB on the dot, and everybody would be happy.
SMART (Self-Monitoring And Reporting Technology - lame name, yes, but at least its better than the scanner standard, TWAIN: Technology Without An Important Name) was designed to notify users that their drives were failing (Well. That's one of the reasons). One reason it will begin notifying is when the internal cache is full. From that point on, running scandisk will reveal the bad sectors. This doesn't necessarily mean the drive is failing - the bad sectors could be due to normal wear and tear. If you're get large amounts of bad sectors, however, it would be an indication a drive is really failing.
Lastly, as a indication of how inaccurate SMART's "Drive is failing" warning is, my father had a 4GB Fujitsu that began making horrendous noises (Head clunking from side to side, while the drive was not spinning). Only after a few days did SMART begin warning that the drive "might" be failing.