Класс PointList должен реализовать интерфейс IPointList. Методы / свойства не могут отличаться только типом возвращаемого значения, что вы пытаетесь сделать с помощью объявления Points в классе PointList. Если вы реализуете
List<TPointType> Points { get; }
тогда логически вы не сможете реализовать
List<IPoint> Points { get; }
Потому что они будут отличаться только типом возвращаемого значения.