When the TTable instance is destroyed (the call to "Free" in the Finally block), ultimately the TComponent destructor is called (Free checks the instance to see if it's non-nil and then calls Destroy). TComponent.Destroy looks like this:
destructor TComponent.Destroy;
var
j: Integer;
begin
if FFreeNotifies <> nil then
begin
for j := 0 to FFreeNotifies.Count - 1 do
TComponent(FFreeNotifies[j]).Notification(Self, opRemove) ;
FFreeNotifies.Free;
FFreeNotifies := nil;
end;
Destroying;
DestroyComponents;
if FOwner <> nil then FOwner.RemoveComponent(Self) ;
inherited Destroy;
end;
Notice near the end of this method the check to see if "FOwner <> nil", followed by the call to the owner's RemoveComponent method. In other words, when this TTable instance was created, an owner was specified in the constructor, then we'll call that owner's RemoveComponent method later when the TTable instance is destroyed. RemoveComponent looks like this...

