They are both application frameworks that provide much of the plumbing that any J2EE application (Servlet/JSP?) needs, such as i18n, i10n, error handling, input validation, etc. They also both provide a good MVC architecture.
The big difference? Struts is Apache, open sourced based, while JSF is backed by Sun. Usually being backed by a vendor may be seen as a drawback, but being Java and Sun, it's a pretty compelling backing. Plus, big vendors like IBM seem to really be endorsing JSF. Struts has been around a bit longer I believe, but JSF seems to have more momentum.
They are both application frameworks that solve a common set or problems. The biggest difference is their roots.
If you go the JSF route, take a look at Seam. It's pretty solid.