I think the color is based on a hash calculation against $address($nick,something), so if the nick identifies after joining the channel, then their address appears to change, and there's a good chance their color would also change.
No nick or address changes, ever. These are people that have been using the same nick and host for years, you can see the conversation for hours then the color randomly switches to a different one.