I've used HSQLDB in a lot of projects and always been very happy with it. It's lightweight, quick, flexible, and probably the most widely used of the three. It also seems to be the most sophisticated: for example, it's the only one of the three that has fully supported MVCC. (H2 has MVCC, but it's disabled by default and "not fully tested.")
HSQLDB also has great dialect support so you can share code with other databases, and I love that it has a storage format that is just a SQL script that creates all the tables: it's extremely useful for debugging and testing.
H2 does have full-text search and ODBC support if those are valuable to you. I don't know of any real arguments for using Derby.
Based on my experiences, I would definitely recommend HSQLDB—but I don't have any reason to recommend against the other two.
—Sarah