Everyone knows EE's categories suck. What this question presupposes is, maybe they don't have to. What are the best ways to handle more complex categorization schemes? For example, I am about to start development on a website for a funiture maker. There will be a "products" channel, where each product needs to be categorized in several ways: product line, type of product, room of the house. Those categories will be used in various ways across the site, include generating menus, product listings by the various criteria, related products, and so on. Below are the methods I've used before or am familiar with. Am I missing any? What the are upsides or downsides?
Use EE's native category groups. Assign more than one group to the channel and instruct the client to select at least one of each type. Use the Category Description field as necessary for display on the landing page or what have you.
Create a new channel for each group of categories and enter each category as a channel entry. Use relationship/Playa fields to select categories. Obviously this gives me a lot more flexibility with what information I can associate with the category, but the content entry workflow is not great. Also, lots of channels cluttering things up.
Use Tagger/Taggable/SolSpace Tags. This is great for entering content - you can create a new category on the fly from the edit screen - but very limiting in terms of what data you can associate with a category. No category descriptions as far as I know, although I don't have extensive experience with any of these.
Create duplicate channels for each category. This only works if you know the categories ahead of time and there are very few of them. The only time I have done this was when I was using Structure and wanted to have a page in the tree for each category. Easy to explain to clients... until they want to add a new category.
Am I missing anything? Is there a better way to handle this? What method does everyone else use?