Well, the reason people do it is to save typing; that's it. If you implement the interface, you get to type the names of the constants as unqualified names.
This is called the "constant interface pattern." Folks who write about such things have decided this is
bad. Joshua Bloch's "Effective Java" makes a detailed case against it.
I personally remain unconvinced. I've been told this means I've never worked on a sufficiently large project to see the problems emerge, but I've worked on million-line codebases that use this
pattern and still haven't seen any problems due to it.
In any case,
Java 1.5's new "static imports" feature lets you import constants explicitly into a translation
unit without re-exporting them as if you had implemented a constant interface.