The assignment being run on each iteration seems a bit redundant to me, but it's your code so it's your call as to what you're happy with.

The benefit of the null/empty check is to avoid line 10 throwing an NPE if you pass a null as s, and minimise the code run for an empty collection. Without it, if s is empty, you set up a StringBuilder, iterator, and then end up with an empty string.