Hello,
runas="system" should be preferred when you need to run a piece of code with elevated permissions, e.g. because it is an inherent part of a functionality and should not be restricted by user permissions. runas="admin" can be problematic because the "admin" is a real user and may be deleted - once that happens, any runas="admin" code will cease to work. We just had an issue discussed on the IRC channel #alfresco this week where exactly this happened and broke a major feature for the user.
Regards
Axel