One reason, if I'm creating a dll that has a C API around a bunch of C++ code, I need to differentiate between my C headers which the client may use to import C functions and my internal C++ headers which I explicitly don't want to allow the client to import.
Binding to a C function is pretty simple from most languages/environments with almost no overhead. You don't have to think about all the complexities inherit in C++. So if I were to work with such a library, I'd be sure to separate my C++ from my C interface.