Métodos auxiliares en C #: ¿Estático o no estático?

Tengo una clase con algunas funciones que, de manera realista, son solo métodos 'auxiliares' que el código del cliente podría hacer por sí mismo con otras propiedades / métodos de acceso público, y no estoy seguro de si debería definirlas como propiedades con un getter, instancia métodos o métodos estáticos que toman la instancia como parámetro. Además, también obtuve una interfaz extraída de la clase que se usa prácticamente en todas partes, excepto en la construcción, para permitir que mi código use cualquier clase implementada en la interfaz.

La pregunta es, ¿cuál es mejor desde el punto de vista del diseño? Por ejemplo, como un medio para obtener la inicial de esta clase:

class Person : IPerson {
  private string name;

  public string Name { get { return this.name; } }

  // Property with getter
  public string Initial { get { return this.name.Substring(0,1); } }

  // Instance method
  public string GetInitial { return this.name.Substring(0,1); }

  // Static method
  public static string GetInitial(IPerson person) {
    return person.Name.Substring(0,1);
  }
}

La propiedad se presta a un código de cliente más corto y más legible, pero requeriría que cualquiera que implemente contra IPerson escriba su propia implementación, como lo haría el método de instancia.

El método estático significaría que implementar clases no necesitaría escribir las suyas, y mi código puede garantizar cómo se determina la inicial en función del nombre, pero significa que no puede estar en la interfaz, y el código del cliente es un poco más detallado .

¿Se reduce a si no es una buena idea permitir que las clases de implementación especifiquen cómo se calculan los métodos auxiliares?

EDITAR: Menor aparte, ¿por qué SO no me permite agregar la etiqueta de mejores prácticas?