When RemoveNotifier is called, the interface to which the supplied Index parameter refers to is destroyed automatically, which is not noted in the Borland supplied documentation in all versions of Delphi, up to Delphi 2005.

The code below indicates what I'm talking about. Notice that LEditorNotifier belongs to TEditorNotifier, which is a class. I've obtained a reference of TEditorNotifier back from the SL TStringList instance's Objects array property.
There isn't a need to call LEditorNotifier.Free because it's already handled by RemoveNotifier.

All this part of the experience I've gained from writing the Productivity Experts project.

procedure TIDENotifier.FileNotification(
  NotifyCode: TOTAFileNotification; const FileName: string;
  var Cancel: Boolean);
var
  ModuleServices: IOTAModuleServices;
  Module: IOTAModule;
  SourceEditor: IOTASourceEditor;
  I: Integer;
  LEditorNotifier: TEditorNotifier;
begin
  case NotifyCode of
    ofnFileOpened:
      begin
        ModuleServices := BorlandIDEServices as IOTAModuleServices;
        Module := ModuleServices.FindModule(FileName);
        for I := 0 to Module.ModuleFileCount - 1 do
          begin
            if Supports(Module.ModuleFileEditorsIdea, IOTASourceEditor, SourceEditor) and
              (SourceEditor.EditViewCount >= 1) then
              begin
                LEditorNotifier := TEditorNotifier.Create;
                LEditorNotifier.NotifierIndex := SourceEditor.AddNotifier(LEditorNotifier as IOTAEditorNotifier);
                LEditorNotifier.SourceEditor := SourceEditor;
                SL.AddObject(SourceEditor.FileName, LEditorNotifier);
              end;
          end;
      end;
    ofnFileClosing:
      begin
        ModuleServices := BorlandIDEServices as IOTAModuleServices;
        if SL.Find(FileName, I) then
          begin
            LEditorNotifier := SL.ObjectsIdea as TEditorNotifier;
            SourceEditor := LEditorNotifier.SourceEditor;
            SourceEditor.RemoveNotifier(LEditorNotifier.NotifierIndex);
            SL.Delete(I);
            // LEditorNotifier.Free;
          end;
      end;
  end;
end;