Атрибуты являются метаданными. Как правило, вы хотите украсить элемент или тип с атрибутом, чтобы отслеживать некоторую информацию о нем.
Например, атрибут DescriptionAttribute используется PropertyGrid для обозначения описания свойства:
[Description("This is my property")]
public int MyProperty { get; set; }
Большую часть времени иметь более одного описания не имеет смысла.
Однако возможно, что определенный атрибут имеет смысл использовать более одного раза. В этом случае вы захотите установить атрибут, чтобы разрешить нескольким его экземплярам помечаться одним и тем же атрибутом.
(Не то чтобы я это делал, но ...) Скажем, вы создали собственный атрибут для отслеживания основных изменений в классе. Вы можете перечислить это для каждого существенного изменения:
[Changes(Version=1.1, Change="Added Foo Feature")]
[Changes(Version=2.0, Change="Added Bar Feature")]
public class MyClass
{
// ...