Hi,
I just wrote this to Matthew in an email, but here it is again for the record:
You write in the specs that you don't want to sacrifice performance (max. 10%). However, I once tried to query a list of 1000 users with four "dynamic attributes" stored in a "skinny table", and the query took some 5 seconds on PostgreSQL. That's a lot, compared to the 0.2 seconds the query took before, and simply too much for a page that is frequently visited. And "serious" online communites may have 100.000 users and more...
So I firmly believe that you would need to provide a "storage type" to store attribute values together with the object's main SQL table. I think that acs_attributes already provides such a mechanism, but I'd have to check this...
Bests,
Frank