Imagine the following scenario:
Site collections at http://MyServer/sites/draft-site and http://MyServer/sites/target-site
You created a custom list with a metadata column.
You saved the list as a template.
You transferred the STP file to the other site collection.
You created a new site based on that STP file.
Why the list has strange behaviors when you check the functionality of the metadata column?
First we might have to explain how the metadata column works. It works in the same way you experienced with a look-up column. From where the metadata (look-up) column gets the values? From the TaxonomyHiddenList at http://MyServer/sites/draft-site/Lists/TaxonomyHiddenList . You may understand that just a template from the List with a look-up field moving to a different site collection where no source list for the look-up column is available; it cannot work. But there is a TaxonomyHiddenList on the target site and it still not work. SharePoint saves the source with the GUID of the source list and each list has an own GUID. Still the same reason why it also cannot work with a metadata column.
Out of the box you might not find a way but with some development I think it should be possible to find a solution. But any solution based on a scenario and due to lot of possible scenarios it is not possible to find one way for all. My first idea would be to create an own feature that works as a template. If you work with own provisioning code please also be careful and check another post.
You can find some other blogs and discussions related to the Look-Up behavior when you create a template:
Regarding known issues with the taxonomy store:
Terms and how to update TaxonomyHiddenList when the timer job was not able to update
Managed Metadata and custom profile property what I need to know