Alex King has a blog post describing the major differences between using custom fields and taxonomies in WordPress. If you are familiar with the WordPress database, and if you think about it for a couple of minutes, you’ll probably realize why taxonomies are a better choice than custom fields for those situations where you can use both.
The reason to favor a custom taxonomy in these situations has to do with the WordPress database structure. Queries by taxonomy are well optimized as this is a primary front-end presentation feature in WordPress core. Conversely, querying by custom field key and value is slow. The value column in the custom field table is not indexed – you are basically doing a search through data that is not intended for that purpose.
The problem is that too many people, even those who are very well familiar with WordPress database structure, never really think about it. And since custom fields are an older way of solving problems, many go for them without proper consideration.