I have used Quartz in the past and I find that it works really well for my needs. I especially like the fact that I can use cron expressions to schedule tasks. Besides that, there are also other features that I can see as being very beneficial such as the
JDBC store, where you can use a database to persist the scheduled tasks which helps in scaling, clustering, high availability, etc., a default Quartz Initializer
Servlet which I can just use as is, easily configurable tasks via xml or properties and so on.
Granted, I havent worked with EJB timers, so I am really not sure what its pros and cons are and how it compares to the Quartz scheduler.
It took me a little while to figure out the whole Quartz scheduler api, configuration and how to get it up and running, but going through all the documentation and samples helped me to easily figure it out.