This is an interesting discussion. I like how the original question asked for experiences instead of the "one right way." I'd like to add a small point of philosophy that could help.
The further we remove our decisions from the point and time of delivery the lower the likelihood of delighting our customer. Decisions far distant from the moment of delivery are likely to suffer from:
- Invalid assumptions
- Disconnected or no relationship with the user/customer
- "Telephone game" effects
- Environments where the process become more important than the product
- Emphasis on output instead of outcomes
So, MUST the UX contribution of the work be done during the Sprint or iteration? No, but we need to keep in mind the risk that we may end up with merely satisfied users rather than delighted users. My general advise is to move UX and all other kinds of work as close to user delivery time as possible, making the feedback loop both closer and more timely. That way we have a higher chance of really making something that the users need, not what they asked for.