I don't think your original code was queueing the fadeout, delay, and then fadein properly. Try it like this using the callback function of fadeOut so that the next bit of code only executes after that has completed.
var words = ["A", "B", "C", "D"];
var showwords = function() {
var newword = words[Math.floor((Math.random() * words.length))]
$("#words").fadeOut( 1000, function() {
$("#words").text(newword).fadeIn(1000);
});
}
setInterval(showwords, 3000)