mIRC depends on numeric 001 to be sent by a server to indicate that mIRC has properly connected to the server. If it does not receive a numeric 001, many features will not work correctly, not only part events. mIRC also requires the MOTD numerics to be sent in order to initiate post-connection features. I can't change this I'm afraid, mIRC needs specific numerics to indicate connection and post-connection status in order to function correctly.

As you say, mIRC will only join %#Channels if it has received the 800 numeric, this is by design. I'm not sure what you mean by mIRC resetting the message from the 800 numeric though. If I join an IRCX server I am able to join/part %#Channel many times without a problem. Can you describe this a little more?