Every type needs a new attribute table, and all text will be lumped together as text columns, which probably isn't the most efficient way to work.
On any decent database, empty or null varchar columns don't take up much (if any) space. Premature optimization is the root of all evil; unless there are hundreds of possible attributes, a regular flat table will suffice (given the hits I get, a flat file would work, but the interface isn't nearly as convenient).
With regular tables, the data can be properly typed (and constrained), and the database can make intelligent decisions about types.