Yeah, the more I think about it, the more I think that creating a second rect and storing it as an attribute is the way to go. All of the graphical adjustments and movements will be performed with the normal rect attribute, and the actual collision and bounds tests will be done with the collision_rect.
That is how I did it in pygsear: http://www.nongnu.org/pygsear/
(except I called it spriteobj.crect :o)
I guess it's not really that hard, but I was really exhausted after writing a strip -> cel routine :D
Interesting ... I have been thinking about writing such a beastie for pygsear for the last few weeks... are you releasing your code?