En general, querrá utilizar InvariantCulture si la cadena que está generando debe persistir de forma independiente de la cultura del usuario actual (por ejemplo, en el registro o en un archivo).
Querrá usar CurrentCulture para las cadenas que se presentarán en la interfaz de usuario para el usuario actual (formularios, informes).
Pueden aparecer errores sutiles si usa CurrentCulture donde debería usar InvariantCulture: errores que solo salen a la luz cuando hay varios usuarios con culturas diferentes accediendo a la misma entrada o archivo, o si un usuario cambia su cultura predeterminada.
Especificar explícitamente CurrentCulture (el valor predeterminado si se omite el argumento IFormatProvider), es esencialmente documentación que demuestra que ha considerado lo anterior y que la cadena que se está generando debe utilizar la cultura del usuario actual. Es por eso que FxCop recomienda que debe especificar el argumento IFormatProvider.
Cómo definir IFormatProvider personalizado - http://www.csharp-examples.net/custom-iformatprovider/ –
¿Qué pasa si el objeto es una cadena? ¿Hay alguna forma en que la cultura pueda marcar la diferencia? (A diferencia de formatear algo como DateTime) –