I remember reading that $ is immediate evaluation and % is lazy evaluation in EL but i might've been confused somehow, i can't find a link back to that.
Anyway they both work in EL. Then there's the #{} that is OGNL and throws this in EL:
org.apache.jasper.JasperException: /index.jsp(14,38) #{..} is not allowed in template text
P.S. ${} and %{} both work in
JSP.