#Javascript(using external library-Enumerable), 150 bytes
_.Range(1,51).WriteLine(x=>(g=_.Range(65,x>25?52-x:x)).Write("",y=>(w=String.fromCharCode)(y))+((h=g.Reverse().Skip(1).Write("",y=>w(y)))==null?"":h))
Link to the library: https://github.com/mvegh1/Enumerable
Code explanation: Create a range of ints starting at 1, for a count of 51. For each, write a line according to complex pred. Do some JS wizardry with global variables and caching...and voila. For each int in WriteLine, we are creating the left hand range of ints and storing into global "g", and String Joining (Write) with ""
delimiter and mapping each int to the String mapping to the int char code. Then, we concat the right hand side by taking the reversal of that sequence (and skipping the first element because that will match the last element of the original order...), writing with the same logic. We check against null, because the edge case will be null (i.e [A].Skip(1) == []
.. and write will return null...so coerce to empty string