Basically, what you are hearing is one of two solutions: an EAV solution or using a single row table. The single row solution has the following advantages:
- You can enforce data integrity rules on the values including referential integrity.
- Similarly, you can enforce that a given attribute have a value (via the nullable attribute).
- You are guaranteed when you query for the value that you will have one and only one row.
- It is harder for someone to willy-nilly change the key value (the column name) and break your code.
Unless you are going to have many hundreds of columns, having dozens of columns makes no difference.
An EAV structure is definitely more dynamic. If this is going to support the site assembly it still the case that whenever an attribute is added somewhere code must be changed to use that new attribute. Further, with an EAV structure, you cannot guarantee that a value will exist nor that it will matching something coming from another table.
The big advantage an EAV system has as I mentioned before is that it far more dynamic. If your system is really to support many different types of sites and that the site designers of those sites might have unforeseen needs with respect to storage of data attributes, then the EAV structure would be better.