Static implementations have two problems:
you can't really find them with any static code analysis, like listing all the implementors, because the static method does not implement the interface, so you're forced to mention the default implementation in the javadoc
there's sometimes the need to have some state in the implementor, which cannot really be done within a static method
I thus prefer to use a concrete class which allows for both inheritance (if you're not limited by single inheritance) and composition, and call the resulting class *Peer, as it will normally be use with alongside the main class implementing the interface. The peer will implement the interface, and may also have a reference to the main object in case it needs to fire events in the name of the main class.