Функция продолжает работу после инструкции return true
Не-а, не продолжает. Это вам так кажется, из-за рекурсивного вызова. Кстати, его результат тоже надо возвращать, т.е. вместо просто
checkPalindrome(newStr);
должно быть
return checkPalindrome(newStr);
Ну и ещё проверки на пустую строку нет.