APL (Dyalog Unicode), 50 bytes
{∪{1⍳⍨⍵[⍴⍵]≡¨⍵}¨{L←⍴,⊃⌽⍵⋄L⍴¨⍵}¨{⍺,⍵}\¨{⍺,⍵}\⊂∘⍕¨⍵} I'm fairly certain there's room for improvement, but it's just out of my reach, for the moment.
∪ ⍝ list unique values 1⍳⍨ ⍝ get the index value of the first occurrence of 1 in the bit mask ⍵[⍴⍵]≡¨⍵ ⍝ create a bit mask by checking which padded strings match the last string in the expansion ¨ ⍝ for each list of padded strings L←⍴,⊃⌽⍵ ⍝ assign length of last string in expansion to L ⋄ ⍝ statement separator L⍴¨⍵ ⍝ for each string, reshape to length of longest string ¨ ⍝ for each list of strings {⍺,⍵}\¨{⍺,⍵}\ ⍝ expand twice. (A, B, C) -> (A, AB, ABC) -> ((A), (A, AB), (A, AB, ABC)) ⊂∘⍕¨⍵ ⍝ for each element, encode as string and enclose