@ArenMook: I understand, sorry for being confusing. To be more precise:
ActiveAnimation advances and samples ALL AnimationStates attached to mAnim, regardless of whether they have been set to playing by the Play method. This means that it won't trigger the finished callback until the longest animationstate has been completed (even though it is not included in the sampling because it is not set to playing). I think that's why a check to see if each AnimationState in the foreach loop is playing seems to make the finished callback call at the correct time even if there is a longer AnimationClip attached.
If I'm still not being clear, I can provide a sample project, just let me know. Thanks!