ArgumentNullException ou NullReferenceException do método de extensão?

Qual você consideraria o melhor tipo de exceção a ser lançado quando um método de extensão é chamado em uma instância nula (onde o método de extensão não permite)? Como os métodos de extensão nada mais são do que métodos estáticos, você poderia argumentar que deveria ser ArgumentNullException, mas, por outro lado, eles são usados como métodos de instância, por isso pode ser mais natural usar o NullReferenceException. Vamos dar o seguinte exemplo:

public static string ToInvariantString(this IFormattable value, string format)
{
    return value.ToString(format, CultureInfo.InvariantCulture);
}

Dessa forma, uma NullReferenceException será lançada se o parâmetro value for nulo.

O outro exemplo seria:

public static string ToInvariantString(this IFormattable value, string format)
{
    if (value == null) throw new ArgumentNullException("value");
    return value.ToString(format, CultureInfo.InvariantCulture);
}

EDITAR: Em algumas das respostas, você apontou que um método de extensão pode ser chamado como um método estático e, nesses casos, uma exceção de referência nula estaria errada, o que é um ótimo ponto e, na verdade, é uma das minhas preocupações, sem saber por que esqueci. mencionar isso na pergunta em primeiro lugar.

Alguém também apontou que é errado lançar uma NullReferenceException, e sim, é. É por isso que não o jogo, apenas deixo acontecer (deixe o CLR jogá-lo), não guardando o método.

Eu acho que sou a favor da ArgumentNullException (é o que eu uso até agora), mas ainda acho que há pelo menos espaço para argumentar contra a NullReferenceException, já que parece mais natural na maioria dos lugares onde o método será usado.

questionAnswers(5)

yourAnswerToTheQuestion