@ISA influences two things. One, it lists where to look for methods that aren't found in the current class. Two, it lists where to look when isa() is called on the class or an object of a class.
I think those are two different concepts: where does this class keep the implementations of its behavior and how does this class relate to other classes. (I'd also add in a third concept, what kind of behaviors can this class perform, but not everyone sees the world this way.)
Right now, I can't come up with any really good reasons (besides in testing, where I do it way too often) to change @ISA at runtime, as there are other ways to change #1 and #2 above, but it's nice to work with a language that allows it, if necessary.