Do you maybe have a script that will rejoin a channel for some reason? For example, if you're in a small channel and you're an op, you might have one that rejoins the channel if you're the only one in there and you're not an op (regain ops script). Or there may be some other reason you might have a script to rejoin a channel. If you /hop, the buffer won't clear, but if you /part and /join, the window will close and reopen, causing you to clear the buffer.
Other than that, there is a /clear command that will clear the buffer. Perhaps something like that is in a script.
Just throwing some things out as I've never seen that happen.