firebug написан человеками на js, соответственно дело в его коде.)
Скорее всего пользовательский код, исполняется eval'ом, а перед этим запихиивается в блок.
Соответственно первая скобка закрывает блок, вторая открывает новый но так как он пустой и перед ним стоит отрецание - получается не блок, а объект:
usercode = '}!{';
alert(eval('{'+usercode+'}')) //{}!{}
Первое в "{}!{}" - не объект, а пустой
блок кода, т.к. ничто не указывает ему вести себя как объект).