05AB1E, 10 9 bytes
¶¡RζðмζR» or with alternative start:
.BRøðмζR» Similar approach as @Dennis♦' Pyth answer.
-1 byte thanks to @Emigna replacing ðõ: with ðм.
Explanation:
¶¡ # Split on new-lines R # Reverse the list ζ # Zip/Transpose with unequal-length items (with space filler by default) ðм # Remove all spaces ζ # Zip/Transpose unequal-length items (with space filler) again R # Reverse the list again » # Join the list by newlines, and output implicitly Alternative explanation:
.B # Box (implicitly splits on new-lines and appends spaces) ø # Zip/Transpose with equal-length items # Rest is the same