It looks like the wordpress function the_excerpt actually strips out html tags (like the shortcode) so you'll need to create a new function if you want to include them in excerpts.
This looks like a pretty straightforward guide on adding support for it: http://aaronrussell.co.uk/legacy/improving-wordpress-the_excerpt/
When it has you modify what tags to show in the new function you can include span as well:
$text = strip_tags($text, '<span>');
Alternatively, you can use the <!--more--> tag in your posts to signify where the post should be cut off and then change the archive page to spit out the content before the more tag only. In that case, you would open up includes>loop-archive.php in your theme files and look for:
Change the_excerpt to the_content like this: