Why do we have Top N Sort in this example?
It's a somewhat annoying limitation of the current optimizer.
I wrote about this a little as part of The Eager Index Spool and The Optimizer:
Index spools do not tell the optimizer they support output ordered by the spool's index keys. If sorted output from the spool is required, you may see an unnecessary Sort operator. Eager index spools should often be replaced by a permanent index anyway, so this is a minor concern much of the time.