The first one returns void. You cannot use something that returns void inside an expression. The second one is a String that is passed to the out.println() function (If memory serves me right). This is correct because the println() function is overridden to accept Strings.
i think the answer to your problem is expressions inside JSP when translated into servlet they go into service method i.e between out.print(" "); therefore out.print cannot expect another print statement inside it. or it could be this only print writer out is valid not System.out inside a jsp/a servlet.