Насколько я помню, если не указать вызов конструктора явно, вызовется конструктор по умолчанию (т.е. без параметров). Видимо, в данном случае это не устраивало.
1) У value может и не быть конструктора без параметров
2) Если у value есть конструктор без параметров, то
без :value(1) вызываемый конструктор по умолчанию возможно делал бы лишнюю работу. ( В конструкторе Sample пришлось бы писать код, который
перелывает value() в value(1) )
Ну и в заключение, чтобы жизнь мёдом не казалась, добавлю, что простые типы вроде int, по умолчанию _не_ инициализируются, хоть и имеют семантический конструктор, инициализирующий нулевым значением. Поэтому для обычных переменных разницы нет, где инициализировать, в списке инициализации или в теле конструктора.