I imagine that they did this in order to be able to use more of (or all of) the TensorFlow functionality available in the Python API without having to rewrite a huge amount of code in R.
There are Operations in TensorFlow that don't invoke the C++ layer directly. Instead, they are composed of other Operations in Python, meaning that binding directly to the C++ layer would require finding and rewriting that code.
It still gets sent down to the C++ layer at the end of it, though the stack traces might end up looking pretty ridiculous.