Hola Rodrigo, cómo andás?
Primero que nada, el desarrollador sí puede hacer pruebas de caja negra a nivel unitario, la afirmación no dice lo contrario.
Por otro lado, sí puedo realizar una prueba de caja negra de un módulo a través de una interfaz por ejemplo, o a través de código que realice llamadas a los métodos/funciones que este tenga. Teniendo la especificación/contrato de las funciones/métodos/clases, puedo diseñar e implementar casos de prueba sin tener acceso a la implementación.
Saludos,
Cecilia.