Sounds like a great case for Postgres hstore (like OpenStreetMap does it)?
"can be useful in various scenarios, such as rows with many attributes that are rarely examined"
They are querying these quite heavily, they aren't just random attributes they need to retrieve.