What's the difference between reassign and delegate?

A user can reassign the task to another user for approval. The new user's hierarchy is used for approval. For example, if a user receives an approval request relevant to another team, he can reassign it to a user in another team.

A user can delegate the task to another user. After approval by the delegate, the initial user's hierarchy is used for approval. The delegate can still act on the task after task has expired.