Haskell, 70 bytes
mapM putStrLn[[toEnum$x+sum[32|x+abs y/=90]|x<-[65..90]]|y<-[-25..25]]
I revisited this problem 6 years later and saved a bunch of bytes. Character growth!
Haskell, 81 bytes
Counting bytes the way @nimi did; f
is an IO action that prints the desired output.
x!y|x==min(50-y)y=65|0<1=97
f=mapM putStrLn[[toEnum$x+x!y|x<-[0..25]]|y<-[0..50]]
x!y|x==min(50-y)y=65|0<1=97
f=mapM putStrLn[[toEnum$x+x!y|x<-[0..25]]|y<-[0..50]]