Проблема в том что ты убиваешь вкладку на которой кнопка выполняет свой клик... т.е. кнопка убивает себя из под себя...
На до убийство сделегировать, например основному потоку через TThread.ForceQueue
procedure TfrMain.TabClose(Sender: TObject);
var
activetab : Integer;
begin
activetab:=((Sender as TControl).Parent as TControl).Parent.Index;
Thread.ForceQueue(nil, procedure
begin
TabControl1.Delete(activetab);
end);
end;