MB 21: On Shabbos or Yom Tov - Because the Thanksgiving Sacrifice is not brought then. There are some places where they say the Song of Thanks on Rosh HaShana and Yom Kippur, because one verse of it reads "Cry [TaRiu] to HaShem all the lands" [and T'ruos "TeRuah!" are made with a shofar.] And in our countries the custom is not to say it then.
MB 22: Because of leavening - Because ten leavened breads were required accompanying the Thanksgiving Sacrifice. So too on the Eve of Passover it was impossible to bring this sacrifice, because perhaps they would not be able to eat the bread before the time when leavening becomes prohibited - and it would then be necessary to burn the remainder, and it is forbidden to cause holy products to require burning [meaning that in the afternoon, it would be forbidden to eat them because of the prohibition of the Eve of Passover, while it would be _required_ to eat them in order to prevent them from being burnt.] And for the same reason, we do not say the Song on the Eve of Yom Kippur, because one who brought a Thanksgiving Sacrifice then would - by reducing the time when it is permissible to eat the bread - be causing them to become invalid. This is also the reason why one who reads the Torah portions relevant to the various sacrifices for individuals, does _not_ read them on the Eve of Yom Kippur, because they could not be brought then, exactly like the Thanksgiving sacrifice - with the exception of the Olah offering which can be read (Pri Megadim in the name of the T'vuas Shor) [Because the entire Olah is offered on the Altar - no part is eaten]. We do read the Song of Thanks on the Eve of Tisha B'Av [the Ninth of Av] and Tisha B'Av itself. On holidays, one should not skip over the verse "Mizmor Shir L'Yom HaShabbos [a song of praise for the Sabbath day]," because holidays are also called "Shabbos" [days of rest].