I always recommend using both ASM and a CFS, where appropriate. For example, on Linux systems, where there is a free, Oracle-supported CFS (OCFS2), I recommend making a small OCFS2 filesystem (or two) for storage of OCR and voting files. Then, make the primary datafile/index/log storage on ASM. Optionally, they can then have a large dump or backup filesystem that is OCFS2, or NFS - but I always recommend keeping an archive location outside of ASM, so if the ASM instance won't start up, you can at least get to your archive logs, and presumably you're doing backups or a standby database somewhere.

The reason for using both ASM and CFS on Linux is because dealing with multiple block devices for the various OCR and Voting devices is annoying and complex, and typically you'll end up wasting a lot of disk space (i.e. allocating an 8GB lun for a 100MB ocr device). By using a clustered file system, you can put multiple objects on the one disk, and if necessary, store other things there. However, OCFS2 has no capability for growing filesystems, creating situations where using OCFS2 for datafiles means increasing the number of mounts over time, which gets messy. ASM solves that problem for you by doing very basic striping.

Personally, I'd choose ASM and recommend it to all my customers. This is partly because: 1) Oracle recommends it, 2) if Oracle recommends something, they generally support it better than things they don't recommend, 3) it doesn't cost extra money, and 4) I think ASM is a fine product that does its job well (admittedly better in 11g than 10g, but that's not your question).

I think that using a CFS requires training for system admins while ASM would also require training, but possibly for the DBAs instead of the sysadmins. Typically, I still see ASM being managed by DBAs even though it really isn't a database. Many companies have the DBAs manage anything with the word Oracle stamped on it.