This behaviour is expected and intentional.
.eof is toggled when the eof bit on the file handle is toggled, specifically by checking with the feof() function
. mIRC does not check against the file size. In other words, mIRC does not know you've reached the end of the file until you've read *past* the end and toggled the eof bit. That's the only way feof() (and mIRC by extension) will know the EOF was reached.
If you don't want to use this .eof bit, you should check against the file length on your own. This is not what the .eof bit is meant for.