R, 52 bytes
write(intToUtf8(outer(26:1,1:26,"<=")*90:65,T),1,26)
Try it online!
A different and (for now) golfier approach than this or that R answers.
To generate "exact text" as is required in kolmogorov-complexity challenges, there are usually two options in R: cat and write. cat is more flexible, as write is actually a wrapper around cat, but the advantage of write is that if you can construct your data in a rectangular (matrix) form, some of the verbosity of cat goes away, for instance, you get a newline without explicitly including it as you do in cat, which will then include an extra separator argument, which is usually undesirable. Since each line of the text here appears to be of variable width, write is not the first thing that comes to mind, and both of the other R answers are quite creative in getting around the shortcomings of cat. In particular, the fill argument is not one I'm familiar with, but will have to keep trying out.
The trick here is that write, like cat, separates elements by spaces. Since every line has the same number of spaces, if we can construct the right matrix of empty strings "" and capital letters, we can just use write to automatically put the spaces where they go.
My first attempt started by constructing the matrix directly:
R, 63 bytes
m=matrix(LETTERS,26,26);m[lower.tri(m)]="";write(m[26:1,],1,26)
Try it online!
This builds up a matrix of capital letters, then sets the lower triangle to empty strings, and finally flips vertically since write proceeds down the columns.
This is equally as long as Bart-Jan van Rossum's answer; I was going to post it since the approach was different, but when I went to read a comment on another completely unrelated challenge, I thought to try intToUtf8 instead.
Two things make this possible. Typically, intToUtf8 takes a vector of integers and converts them to a single string made up of their utf8 codepoints. There is also an optional argument, usually FALSE that when set to TRUE will instead return a vector of characters of the utf8 codepoints. The other trick is that intToUtf8(0) returns the empty string. So instead of constructing a matrix of "" and LETTERS, I constructed a matrix of codepoints, which ended up (finally) being shorter than the other R answers:
R, 61 bytes
write(intToUtf8((outer(1:26,1:26,"<=")*65:90)[26:1,],T),1,26)
Try it online!
Luckily, despite intToUtf8 returning a vector, write takes a ncolumns argument to specify how many columns wide it ought to be, which provides enough structure for write to print it correctly.
Finally, there are a couple of inefficient golfs which bring it to its current 52 byte form.
A single trailing newline is acceptable, but no other formatting changes are allowed.So a trailing space on each line would not be permitted? \$\endgroup\$