Haskell, 5252 44 bytes
f k=[('k=[[" '<$['B'..s])++",s:" "]>>=(['A'..s]>>s:" "s]>>)|s<-['A'..k]]
Returns a list of lines.
f k= -- main function is f, input parameter k
[ |s<-['A'..k]] -- foreachfor each s from ['A'..k]
>>= -- map ('and '<$['B'..s]collect the results in a single string) the function:
(['A'..s]>>) -- replace each element in ['B'['A'..s] with a space
++[ , ] -- and appendover the list, containing
['A'..s]>>s: " " -- (length of ['A'..s])a copiessingle ofspace theto twoget characterthe listindent
s:" " -- s --followed [s,space]by space to get the letter sequence
Edit: @jferard: saved three bytes. Thanks!