To expand on Justin Niessner's comment, I'd be using a trigger to achieve this animation as it's all UI bound.
Think about this:
- Where would you put code so that when someone mouses over a button it becomes hilighted?
- What about code for "depressing" that button when it is clicked?
These and your question are all variations on a theme, so I'd say do it in the GUI.
However, there's one exception to this rule. If the "animation" is a processing animation, then it might be worth tying it to the ViewModel so the ViewModel can control how long the animation runs while it's processing something. Otherwise do it in the GUI.
EDIT: Based on your comment. Ok so the animation should run off a property in the ViewModel, not the button click event. The Click should start the processing in the ViewModel through a command, and the execute code for that command should set a processing flag property on the ViewModel. Then the View can bind to that processing flag and display a progress bar or whatever when that flag is set.