GolfScript, 85 bytes
{(;);}:r;", "%(r\(r n+:c;;.,\'|'%.,@\-)):l;0:m;{.,0>}{" "m*\(.,m+:m l\-" "\*+c@}while
#2017 Update - GolfScript - 71 bytes
', '/~~:c;~1/.,\.{'|'=},,@\-):l;['|']/0:i;{.,i+:i l i-' '*c+\' '*"
"\}/
###Explanation
', '/~~:c;~1/ # Parses input
.,\.{'|'=},,@\-):l; # Computes string length without '|'
['|']/ # Splits the array
0:i; # Counter
{., # Length of the substring
i+:i # Counter update
l i-' '*c+\ # Adds spaces after the substring
' '*"\n"\ # Adds spaces before the next substring
}/ # ...For each substring