Add a vocabulary and a term-reference field or just add a select field? I have various content types which have sub-types in my Drupal 7 site. e.g. "downloadable resources" content type, and within this there may be reports, presentations.

Is there any reason not to add this to a select field with a list of value=>label pairs?

Should I create a separate vocabulary for these options and add a new field referencing that terms? I have a couple of other content types similarly modeled, so I would end up with a load of very small (2-3 terms) vocabularies.

Taxonomy seems to be favoured but instinctively it seems overkill?

Edit: or is it better to have very granular content types (report, presentation...), even though the fields are the same between them?
As @reptilex mentioned, the answer to this question is going to vary depending upon your very specific situation.  There are a lot of helpful documentation resources and blog posts floating about with good advice about making this decision.

drupal.org Guidelines for Taxonomy Design 
blog - How to Decide Between Taxonomy and CCK to Classify Content
blog - Drupal Taxonomy vs. Content Type Field