osobne si myslim, ze je to kvuli tomu, ze kdybys v anonymni tride ty promenny priradil nejaky jiny objekt (tedy porusis final), ze by to mohl smazat gc, kdyz anonymni trida prezije volani metody (das to napriklad do kolekce). Tim final muzu lokalni promennou skryte predat anonymni tride jako pointer (jedna se o zalezitost na urovni JVM). IMHO tady budou existovat ty promenny ve ksutecnosti dve, jedna pro anonymni a jedna pro obalujici tridu a pri final se nemusis zabejvat synchronizaci, protoze to jsou dva pointery ukazujici na tyz objekt. Jakakoliv slozitejsi implementace dovolujici nefinalni promennou by imho zeslozitovala a zpomalovala JVM.