string es un "alias" en C# para System.String. Técnicamente no hay ninguna diferencia. Es similar a usar sólamente int
en vez de System.Int32. Sin embargo es recomendado utilizar string cada vez que se hace referencia a un objecto.
Ejemplo:
string lugar = "mundo";
También es recomendado usar String si se necesita referir específicamente a la clase.
Ejemplo:
string saludo = String.Format("Hola {0}!", lugar);
Generalmente este estilo es el que utiliza Microsoft en sus ejemplos.
Parece que la pregunta es similar a otras, así que intenté elaborar un poco más sobre en qué casos valdría la pena usar una implementación sobre la otra.