Why does Keras need TensorFlow as backend?
This makes more sense when understood in its historical context. These were the chronological events:

April 2009 Theano 0.1 is released. It would dominate the deep learning framework scene for many many years.
June 2015 Keras is created by François Chollet. The goal was to create an abstraction layer to make Theano easier to use, enabling fast prototyping.
August 2015 Google hires François Chollet.
November 2015 Tensorflow is released by Google, with much inspiration from Theano and its declarative computational graph paradigm.
December 2015 Keras is refactored to allow for pluggable backend engines, and now it offers backend implementations for Theano and Tensorflow.

Other backends were later supported by Keras (CNTK, MxNet), but they never got much traction.
Time passes by and the overlap between Tensorflow and Keras grows. Tensorflow ends up duplicating many of the functionalities in Keras (apart from the multiple APIs within Tensorflow that also had big overlaps).

September 2017 Theano is discontinued.
November 2017 Keras is bundled with Tensorflow as tf.keras. From this point on there are 2 different Keras: the one bundled with Tensorflow and the one that supports multiple backend engines. Both are maintained by the same people and are kept in sync.

At some point, the roadmap for Tensorflow 2.0 is defined, choosing to pursue an imperative model like PyTorch. The person leading the Tensorflow API refactoring is François Chollet. This refactoring included a reorganization of the functionality to avoid duplications.

November 2018 some crucial functionalities of Tensorflow are to be moved to tf.keras, generating a heated debate
September 2019 Keras 2.3 is announced to be the last release of the multi-backend version of Keras

Now, THE ANSWER to your question: Tensorflow is the most used Keras backend because it is the only one with a relevant user base that is under active development and, furthermore, the only version of Keras that is actively developed and maintained is one with Tensorflow.
So, summing up:

At the beginning of Keras, the overlap with Tensorflow was small. Tensorflow was a bit difficult to use, and Keras simplified it a lot.
Later, Tensorflow incorporated many functionalities similar to Keras'. Keras became less necessary.
Then, apart from the multi-backend version, Keras was bundled with Tensorflow. Their separation line blurred over the years.
The multi-backend Keras version was discontinued. Now the only Keras is the one bundled with Tensorflow.

Update: the relationship between Keras and Tensorflow is best understood with an example:
The dependency between Keras and Tensorflow is internal to Keras, it is not exposed to the programmer working with Keras. For example, in the source code of Keras, there is an implementation of a convolutional layer; this implementation calls package keras.backend to actually run the convolution computation; depending on the Keras configuration file, this backend is set to use the Tensorflow backend implementation in keras.backend.tensorflow_backend.py; this Keras file just invokes Tensorflow to compute the convolution