Почему возвращает undefined?
Я понимаю, что для вас такое поведение выглядит непонятным, но по названию вашего вопроса и тегу javascript легко догадаться о его содержимом не заходя внутрь. Просто потому, что ровно таких вопросов здесь повяляется по три в день.
Прочитайте как работает асинхронность в javascript, про промисы, про async/await.
Промисифицированный аналог:
function hasBanWords(text) {    
  const url = "banwords.json";

  const xhr = new XMLHttpRequest();    
  xhr.open("GET", url);
  xhr.send();

  return new Promise(resolve => {
    xhr.addEventListener("load", function() {
        if (this.status === 200) {
          const words = JSON.parse(this.response);
          const hasSomeWords = words.some(word => text.includes(word));
          resolve(hasSomeWords);
        }
    });
  });
}

console.log(await hasBanWords("bitch on the beach"));