4 Golfed 2 more bytes
source | link

Pip, 22 2020 18 + 1 = 2119 bytes

Y_@?POgMgsXqMgsX(MXy)-y.g

Takes delimiter and strings as command-line arguments and delimiter from STDIN (idea borrowed from Martin's CJam answer). Uses -n flag to print output values on separate lines.

                      g is list of cmdline args; s is space (implicit)
    POgq               PopRead the first itemdelimiter from g (the delimiter)stdin
 _@?                  Construct a lambda function that takes a string and returns
                         the index of the delimiter in it
       Mg             Map that function to each remaining item in g
Y                     Yank the resulting list of indices into the variable y

           (MXy)-y    Take the max of y minus each element in y
         sX           Space, repeated that many times...
                  .g  ... concatenated to each item in g
                      Print, newline-separated (implicit, -n flag)

And an example run:

C:\Users\dlosc> pip.py -ne Y_@?POgMgsXqMgsX(MXy)-y.g , "Programming, Puzzles" "And, Code golf"
,
Programming, Puzzles
        And, Code golf

Pip, 22 20 + 1 = 21 bytes

Y_@?POgMgsX(MXy)-y.g

Takes delimiter and strings as command-line arguments. Uses -n flag to print output values on separate lines.

                      g is list of cmdline args; s is space (implicit)
    POg               Pop the first item from g (the delimiter)
 _@?                  Construct a lambda function that takes a string and returns
                         the index of the delimiter in it
       Mg             Map that function to each remaining item in g
Y                     Yank the resulting list of indices into the variable y

           (MXy)-y    Take the max of y minus each element in y
         sX           Space, repeated that many times...
                  .g  ... concatenated to each item in g
                      Print, newline-separated (implicit, -n flag)

And an example run:

C:\Users\dlosc> pip.py -ne Y_@?POgMgsX(MXy)-y.g , "Programming, Puzzles" "And, Code golf"
Programming, Puzzles
        And, Code golf

Pip, 22 20 18 + 1 = 19 bytes

Y_@?qMgsX(MXy)-y.g

Takes strings as command-line arguments and delimiter from STDIN (idea borrowed from Martin's CJam answer). Uses -n flag to print output values on separate lines.

                    g is list of cmdline args; s is space (implicit)
    q               Read the delimiter from stdin
 _@?                Construct a lambda function that takes a string and returns
                       the index of the delimiter in it
     Mg             Map that function to each remaining item in g
Y                   Yank the resulting list of indices into the variable y

         (MXy)-y    Take the max of y minus each element in y
       sX           Space, repeated that many times...
                .g  ... concatenated to each item in g
                    Print, newline-separated (implicit, -n flag)

And an example run:

C:\Users\dlosc> pip.py -ne Y_@?qMgsX(MXy)-y.g "Programming, Puzzles" "And, Code golf"
,
Programming, Puzzles
        And, Code golf
3 Added explanation
source | link

Pip, 22 20 + 1 = 21 bytes

Y_@?POgMgsX(MXy)-y.g

Takes delimiter and strings as command-line arguments. Uses -n flag to print output values on separate lines.

                      g is list of cmdline args; s is space (implicit)
    POg               Pop the first item from g (the delimiter)
 _@?                  Construct a lambda function that takes a string and returns
                         the index of the delimiter in it
       Mg             Map that function to each remaining item in g
Y                     Yank the resulting list of indices into the variable y

           (MXy)-y    Take the max of y minus each element in y
         sX           Space, repeated that many times...
                  .g  ... concatenated to each item in g
                      Print, newline-separated (implicit, -n flag)

And an example run:

C:\Users\dlosc> pip.py -ne Y_@?POgMgsX(MXy)-y.g , "Programming, Puzzles" "And, Code golf"
Programming, Puzzles
        And, Code golf

Pip, 22 20 + 1 = 21 bytes

Y_@?POgMgsX(MXy)-y.g

Uses -n flag to print output values on separate lines.

C:\Users\dlosc> pip.py -ne Y_@?POgMgsX(MXy)-y.g , "Programming, Puzzles" "And, Code golf"
Programming, Puzzles
        And, Code golf

Pip, 22 20 + 1 = 21 bytes

Y_@?POgMgsX(MXy)-y.g

Takes delimiter and strings as command-line arguments. Uses -n flag to print output values on separate lines.

                      g is list of cmdline args; s is space (implicit)
    POg               Pop the first item from g (the delimiter)
 _@?                  Construct a lambda function that takes a string and returns
                         the index of the delimiter in it
       Mg             Map that function to each remaining item in g
Y                     Yank the resulting list of indices into the variable y

           (MXy)-y    Take the max of y minus each element in y
         sX           Space, repeated that many times...
                  .g  ... concatenated to each item in g
                      Print, newline-separated (implicit, -n flag)

And an example run:

C:\Users\dlosc> pip.py -ne Y_@?POgMgsX(MXy)-y.g , "Programming, Puzzles" "And, Code golf"
Programming, Puzzles
        And, Code golf
2 Golfed 2 bytes
source | link

Pip, 2222 20 + 1 = 2321 bytes

YPOgY_@Y_@?yMgsXPOgMgsX(MXy)-y.g

Uses -n flag to print output values on separate lines.

C:\Users\dlosc> pip.py -ne YPOgY_@Y_@?yMgsXPOgMgsX(MXy)-y.g , "Programming, Puzzles" "And, Code golf"
Programming, Puzzles
        And, Code golf

Pip, 22 + 1 = 23 bytes

YPOgY_@?yMgsX(MXy)-y.g

Uses -n flag to print output values on separate lines.

C:\Users\dlosc> pip.py -ne YPOgY_@?yMgsX(MXy)-y.g , "Programming, Puzzles" "And, Code golf"
Programming, Puzzles
        And, Code golf

Pip, 22 20 + 1 = 21 bytes

Y_@?POgMgsX(MXy)-y.g

Uses -n flag to print output values on separate lines.

C:\Users\dlosc> pip.py -ne Y_@?POgMgsX(MXy)-y.g , "Programming, Puzzles" "And, Code golf"
Programming, Puzzles
        And, Code golf
1
source | link