I experienced the same as MattMiller - i figured its because setText first removes all text and therefore all settings applied to the previous text before it inserts the new text - this behaviour can be simulated in scribus editor too. To work around the problem, I implemented my own "replaceText()" function, which inserts the new text, before it deletes the old text. Essentially it creates the same result as setText, except it "remembers" the settings from the previous text in the text frame.
def replaceText(text, item):
txtwidth = getTextLength(item[0])
insertText(text, txtwidth, item[0])
selectText(0,txtwidth, item[0])
deleteText(item[0])
I hope this can help someone who search for this issue in the future.