Indeed, their example is terrible, because it's also the kind of 'toy' problem that just doesn't have good real world uses too.
How often do you want to reverse a string.
I think your solution is fine and isn't "bad code" at all. Certainly a real explanation warrants talking about the IEnumerable interface.
I'd also consider the simpler (and ever so slightly better performing):
var buffer = "1234simple".ToArray();
Array.Reverse(buffer);
new string(buffer);
edit: The following is dramatically (x10) even better performing: var buffer = "1234simple".ToCharArray();
Array.Reverse(buffer);
new string(buffer);
But again with the caveat of that not respecting unicode sequences.But to re-iterate and to add to your criticism, I can't understand the use-case of needing to do this outside of toy problems.