Confusing Alphabet Staircase
Jelly, 9 bytes
ØAjṪ$Ƥż¹Y
Try it online!
How it works
ØAjṪ$Ƥż¹Y Main link. No arguments.
ØA Yield "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
Ƥ Map the link to the left over all prefixes, i.e., ["A", "AB", ...].
$ Combine the two links to the left into a chain.
Ṫ Tail; yield and remove the last letter of each prefix.
j Join the remainder, using that letter as separator.
ż¹ Zip the resulting strings and the letters of the alphabet.
Y Separate the results by linefeeds.
C, 82 bytes
f(i,j){for(i=!puts("A");++i<26;puts(""))for(j=0;j++<i*2;)putchar(65+(j&1?j/2:i));}
Try it online!
R, 50 bytes
l=LETTERS
for(i in 0:25)cat(l[0:i],"
",sep=l[i+1])
Try it online!
Perhaps the cleverest part here is using letters[0]
for the empty string to get cat(character(0),'\n',sep="A")
to print the first line.