I use them sometimes as a syntax hack for Map instantiation:
Map map = new HashMap() {{ put("key", "value");}};
vs
Map map = new HashMap();map.put("key", "value");
It saves some redundancy when doing a lot of put statements. However, I have also run into problems doing this when the outer class needs to be serialized via remoting.