In order to full understand the reason behind the current state of things, you need to understand this:
The cursor in the terminal emulator has a vastly different functionality than the cursor in other typical graphical applications (let's say your favorite graphical text editor or word processor).
In graphical editors, you as the user are fully in control of the cursor. It's not an inherent part of the document, it's a concept created for you to conveniently work with, e.g. choose where you're about to type or where you're about to select text.
In terminal emulators, the cursor is fully in the control of the application running inside. The cursor denotes where the next piece of text will be printed by the application. If you as the user move it somewhere else (which you cannot do directly, but can do via nasty tricks, such as sending cursor-moving escape sequences to the tty line), the rest of the application's output is likely going to be messed up.
You never have direct control over the cursor. There are plenty of cases where it seems that you do, but that's not the case. For example, in your favorite terminal-based text editor you press the Right arrow, most likely the cursor will move 1 cell to the right. But not necessarily, e.g. if you're close to the right edge then the text editor might scroll the text to the left and leave the cursor at the same visual position, or even retreat it. You never directly move the cursor. You press an arrow (or any other key), this information arrives at the application running inside the terminal, and in turn that application decides what it wants to do and instructs the terminal to do that (maybe to move the cursor according to the keypress, maybe not).
With all this in mind, let's imagine that you want to select text with the keyboard.
The already existing cursor, however, is not suitable for this job. In order to select with the keyboard, another type of cursor has to be introduced, serving probably the sole purpose of selecting by keyboard (and scrolling the scrollback buffer, if necessary). You may want to begin the selection at the "main" cursor, or may want to begin it elsewhere.
This necessarily results in a very complex, counterintuitive user experience. You need visual representation of two kinds of cursors, you probably need to enter a special selection mode, need to know when to quit it.
For the majority of terminal users this is probably too much of inconvenience, compared to selecting the text with the mouse. For terminals that aim to be reasonably user-friendly, like GNOME Terminal that you tagged your question with, it would be quite tricky to figure out how to make this feature discoverable, intuitive, how to clearly communicate in what mode (regular vs. selection) you are in, how to abandon the selection mode, how to clearly communicate the situation for those who accidentally triggered this mode and want to leave it, etc. All this for a presumably tiny user base.
This is why I believe only a small fraction of terminal emulators (some mentioned behind the link vanadium posted) implement this feature.