In a case where a JSTL tag and a Struts tag can both perform the same task, the JSTL tag is preferred.
Why? JSTL is the standard for all Java EE applications and EL expressions are now part of the JSP specification. Because they are more standard and more part of mainstream Java EE, they are preferred. Besides that, especially in the case of conditional execution (c:if, c:choose, etc.) they are much more flexible and powerful than the struts <logic:xxx> tags.
Obviously,though, there are many Struts tags that do not have a JSTL equivalent such as the <html:xxx> tags. Naturally these tags will be used extensively in a Struts application.
If you use the search function on this forum, you will see several other threads which generally agree with my position.