Now that I found the bugs in USART output (Butterfly + USART = odd behaviour) I bumped into something else:
The double booting was due to PCINT1.
Is this due to the boot code? I started the application with the joystick. AFAIK the default boot loader needs this to start the application. Is this interrupt (PCINT1) left active by the boot loader?
Is there other ways to start the application? How about alternative boot loaders that start the application without user intervention, but still with possibility to force it into the programming mode?
The idea is to use the butterfly in an embedded device that will not be directly reachable.