While I agree with your comments on the fragile-ness aspect, there have been times when I wanted to verify it was called only once (lazy loading public properties for instance). But I could see scenarios if one were writing caching systems where it could be desireable, but that also feels like a "special case" type of test in which case, using the DoInstead() as you mention seems to be more natural, as you suggest.
Just my $.02