Все работает. Например, такой код
Eventable<Int32> var = 32;
var.ValueChanged += () => Console.WriteLine(var.Value);
var.Value = 34;
var.Value = 42;
Выведет 34 и 42. Единственное, сеттер значения сделал публичным, чтобы мог снаружи изменить.
Проблема возможно в том, что вы пытались сделать что-нибудь вроде var = 42, но это ведь не Value изменит, а просто новый объект создаст.
Оффтоп: MethodContainer лучше заменить на Action. А лучше на Action< T >.
Оффтоп2: А еще есть INotifyPropertyChanged, хотя, как по мне, он не очень удобен, т.к. использует строковые названия свойств, а не строго типизирован.