Niestety, printf przy wyrównywaniu słów liczy bajty, a nie znaki, więc przy wielobajtowych (tutaj: znaki diakrytyczne) psuje formatowanie.

$ for m in {1..12}; do
    printf "%-9s %-12s %-9s %-9s %s" \
    $(for l in C pl_PL cs_CZ fr_FR de_DE; do
        printf "%s " $(LANG=$l.UTF-8 date -d 1970-$m-01 +%OB);
    done);
done
January   styczeń     leden     janvier   Januar
February  luty         únor     février  Februar
March     marzec       březen   mars      März
April     kwiecień    duben     avril     April
May       maj          květen   mai       Mai
June      czerwiec     červen   juin      Juni
July      lipiec       červenec juillet   Juli
August    sierpień    srpen     août     August
September wrzesień    září   septembre September
October   październik říjen   octobre   Oktober
November  listopad     listopad  novembre  November
December  grudzień    prosinec  décembre Dezember

Jedną z alternatyw jest użycie printf z awk.

$ for m in {1..12}; do  for l in C pl_PL cs_CZ fr_FR de_DE; do
    printf "%s " $(LANG=$l.UTF-8 date -d 1970-$m-01 +%OB); 
done; echo; done \
| awk '{printf "%-9s %-12s %-9s %-9s %s\n", $1, $2, $3, $4, $5}'
January   styczeń      leden     janvier   Januar
February  luty         únor      février   Februar
March     marzec       březen    mars      März
April     kwiecień     duben     avril     April
May       maj          květen    mai       Mai
June      czerwiec     červen    juin      Juni
July      lipiec       červenec  juillet   Juli
August    sierpień     srpen     août      August
September wrzesień     září      septembre September
October   październik  říjen     octobre   Oktober
November  listopad     listopad  novembre  November
December  grudzień     prosinec  décembre  Dezember

More information

Refs