Не знаю насколько это допустимо, но на данный момент получилось закрыть вопрос так:
	Код:
	TLibForm= class(TForm)
   ...
private
    procedure WinProc(var Msg : TMessage); message WM_SYSCOMMAND;
  ...
end;
implementation
procedure TLibForm.Winproc(var Msg: TMessage);
var
p:Tpoint;
wc:TWinControl;
ia:integer;
begin
  p.X:=msg.LParamLo;
  p.Y:=msg.LParamHi;
  if msg.WParam=SC_CLOSE then
    begin
      wc:= FindControl(WindowFromPoint(p));
      ...
      for ia:=0 to FormHandlList.Count-1 do
        begin
          if HWND(FormHandlList.Items[ia])=TForm(wc).Handle then
            begin
{$Ifdef tester}
              ShowMessage('close - '+ TForm(wc).Name); 
{$endif}
              tform(wc).Close;
              FormHandlList.Delete(ia);//Remove??
              break;
            end;
        end;
    end;
  Inherited;
end; 
 
В любом случае хотелось бы услышать замечания от опытных форумчан по этой теме в целом (создание массивов форм из библиотек), чтобы не приходилось впредь подпирать граблями такие ситуации.