The recommended way to think of a commit is as a snapshot of all the files. Of course, internally, git stores diffs and the like, but conceptually, each commit is a full snapshot of the repo at that time.
Suppose the common parent branch is B1. And the other two branches involved in the rebase are B2 and B3.
Now suppose on B1 there is no file called abc.c. Branch B2 adds this file and writes some code for the sales engine there, while branch B3 adds a file with the same name and writes some code for the reporting engine. Which one shout Git keep?
Understandably, the developers of git have chosen to declare a conflict here and let the user decide.