See the question and my original answer on StackOverflow

Impersonation is useful when you need a common end user experience with other Windows services that are based on Windows security.

For example, Microsoft SharePoint servers use impersonation because you can access SharePoint document libraries with web browsers and with the standard Windows shares UI (connect / disconnect to a network share, based on the SMB protocol). To ensure security is consistent between the two, in this case, you need impersonation.

Other than this kind of scenario, impersonation is most of the time not useful (but can cost a lot in terms of scalability)