CVS is good thanks to its popularity and frequent integration in most tools (IDE, software factories, well just about everywhere).
However, it's old, does not handle change sets and does not version directories. The only SCM I know which has less features I know is PVCS.
If you use CVS, it is really time to move to subversioN.
CVS is very stable. In case of an hardware failure it does not destroy the repository like Subversion does. The worst case is some stale lock files lying around, which are automatically deleted on reboot by most Linux distributions.
CVS does support unique IDs for commits spanning multiple directories.
Popular CVS clients like Eclipse do support change sets.
CVS has very handy short version numbers on a per file basis. "You need version one point twenty four of database.php" is so much nicer "than you need version sixmillionthreehundretninetyeightthousandfivehundretandfourtytwo.
CVS does supports adding commit logs and version identifiers to files.
CVS is commonly supported by IDEs without installing unofficial plugins.