Clustering's good when you need redundancy for the entire server, not just a single databases.
Mirroring happens at the database level, so if the app depends on resources outside of the DB, you have to ensure that the resources are available on both machines. If there are 2 DBs that are both needed and cross DB queries run, then you have to ensure that they're both mirrored and that they both fail over at the same time
If you have other services than SQL (SSAS for eg), mirroring won't help there, but if they're cluster aware, they can fail over with the cluster nodes.
Gail Shaw
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability