okay since nobody helped, i'm gonna write this even tho i don't really know anything... the bots do that probably because they want to cycle, but something's gone wrong. i don't know why this happens but netbots.tcl just doesn't get the bots to part and gain ops, at least not always (i've only encountered these during splits/desynchs - the only time i need to, so it could have something to do with a desync and the bots not knowing who's where...) okay i'm thinking out loud now. sorry. i'd like to see this get answered too...
simply put, GO (like almost all channel functions), relies on the internal channel userlist being there, which is gathered as a response to the WHO #chan sent to the server when it joins the chan. If for any reason it doesn't send this message (eg, a bind raw script stops it, or its queues are full), or the server just doesn't reply (broken ircd maybe), then it can't do any functions that rely on it being able to see the current state of the channel. GO firstly checks if the bot has ops or not, to see if a cycle is necessary (it won't cycle if it has ops with GO). Since it has no chanlist, it doesn't know if its an op or not (ie, it is 'blind'), so it halts the procedure. You can force the bot to reset its chanlist with a .reset #chan, or if that doesn't work, make it part by another means (kick it, or .dump part #chan, etc).