Métodos de delegado vs métodos generales

Quiero saber la diferencia entre usar métodos de delegado y usar métodos generales [sin delegados].

Por ejemplo :

Con delegado:

delegate void DelMethod(string str);

static void Method(string str)
{
    Debug.WriteLine(str);
}

Uso

DelMethod dm = new DelMethod(Method);
dm(string);

Y Sin Delegado:

static void Method(string str)
{
    Debug.WriteLine(str);
}

Uso

Method(string)

¿Cuáles son las diferencias de estos dos?

El método sin delegado es más pequeño y fácil. Pero encuentro codificadores que utilizan métodos delegados con frecuencia.

¿¿Cuál es la razón detrás de esto??

Respuestas a la pregunta(4)

Su respuesta a la pregunta