mIRC Homepage
It seems that if you close a channel window with CTRL-F4 or by clicking the [X], mIRC sends the server a PART command, and then after the server sends its confirmatory PART response, mIRC sends the server a second identical PART command (which the server ignores).

Does not happen with the /part command.
-> holmes.freenode.net MODE #aaaa
<- :holmes.freenode.net 353 tester = #aaaa :tester @ChanServ
<- :holmes.freenode.net 366 tester #aaaa :End of /NAMES list.
<- :holmes.freenode.net 324 tester #aaaa +cnt
<- :holmes.freenode.net 329 tester #aaaa 1350351714
<- :tester!~tester@unaffiliated/tester PART #aaaa
-> holmes.freenode.net PART #aaaa
<- :tester!~tester@unaffiliated/tester PART #aaaa

You're right. I can see it here too..
When you close a channel window without using the /part command, mIRC simulates a PART event internally to make sure that the channel window is closed immediately, mIRC then sends a PART message to the server. The server then replies with a PART event, confirming that the channel was parted.

This approach provides immediate GUI feedback to the user, by closing the window, and prevents any other features, scripts, and so on from engaging with the channel window.

The only other option would have been to keep the window open, send a PART to the server, and only close the window when the server replies with a PART event. However, this can take anything from a second to a minute depending on server lag, during which time a user would be unable to close the channel window.
© mIRC Discussion Forums