In my current project, we always insert an empty new line at the end of the Java source files. We also enforce this with CheckStyle (with error level).
Aside from the already mentioned valid reasons for having a trailing newline character (possible issues with older tools and diff), here is another way to look at it:
Why special-case the last line by not appending a newline character when all other lines in the file have one?