The model cache is supposed to auto-detect when the .egg file or any of its referenced texture files are newer than the cache, and reload the original egg file in that case. If this failed, either there is a problem with this code, or there’s something more subtle going on (like your datestamps are wrong, or this file is referencing textures in a funny way, or something).
I don’t think its your code, it is probably undetectable really. Basically the egg and the .py didn’t change at all, but the texture that was supposed to be in one subdirectory was in the wrong one. When I moved the texture tot he correct directory, nothing else was changed, so I can see why the cache was used.
My only suggestion would be to not cache a model that failed the textures properly.