Se todas elas caberem em uma linha todas as vezes, essas são algumas maneiras fáceis. Se você quiser isso da maneira exata que você está pedindo, vai ser preciso mais esforço para alinhar as colunas corretamente. Aqui está a ideia básica:
#!/bin/bash
inputA="foo"
inputB=$'sys1\nsys2\n'
inputC=$'sys1\nsys2\n'
sgheader="3[4m3[1m%-30s %-30s %-15s3[0m3[0m\n"
sgformat="%-30s %-30s %-15s\n"
printf "${sgheader}" "Service Group" "Autostart List" "System List"
# This shows two simple ways to do this which use concatenation but
# require that the result still fit in the same space as is used for
# a single line
columnA="$inputA"
columnB=$(echo "$inputB"|awk '{printf("%s,",$0)}'|sed 's/,.\s*$//')
columnC=$(echo "$inputC"|tr '\n' ',')
printf "${sgformat}" "${columnA}" "${columnB}" "${columnC}"
# This is a version which outputs like originally asked. It is much harder
# to tweak the formatting of this version though.
pr -tm <(printf '%s\n' "$inputA") <(printf '%s\n' "$inputB") \
<(printf '%s\n' "$inputC") | expand -t10
A melhor maneira que eu conheço para fazer isso do jeito que você está querendo é confuso. Mesmo depois disso, você pode querer refinar ainda mais a saída para alinhar corretamente.