For the number of attributes, I don't think so. Just look at Exchange - it has ballooned the number of attributes significantly.
There may be a performance issue with queries if an attribute isn't indexed. Probably not an issue in smaller environments though. Just an option to be aware of when creating the attribute.
If the attribute changes frequently, it may not be a good candidate for the global catalog (aka partial attribute set or filtered attribute set) in large distributed environments with multiple domains. That is due to the attribute being replicated to all domain controllers in the forest. "Frequently" is somewhat subjective. An example of this would be the lastLogon attribute, which is not replicated to the GC, but lastLogonTimestamp, which is.
If the attribute will hold data, and you are concerned about limiting the size of the objects, you may use the rangeUpper attribute. This may be useful to prevent consumers from storing 10 Mbyte strings in an attribute.