Всё познаётся в контексте. Если герой - поручик Голицын, то после многократного надевания, одевания, снимания орденов и наливания вина он уже сам не знает, чего хочет и как должен об этом поведать. Если персонаж отзывается на обращение "товарищ Швондер" или похожее, то он и не такое ещё может сказать в силу неравноценного билингвизма, а если сам Полиграф Шариков, то правильно по-русски он говорить не может по определению. Литературный герой может и должен скрипеть сердцем, если такое выражение характеризует его происхождение или воспитание.
Сложнее, когда мы видим это в тексте от автора. В этом случае создатель произведения дистанцируется от лица, которое якобы рассказывает о событиях (дневник Печорина, в котором "я" - печоринское, а в других частях "Героя..." - первым лицом выступает некий путешественник, с которым беседует Максим Максимыч). Яркий пример - рассказы Зощенко, в которых рассказчик редко тождественен автору.
Если же скрипение сердцем начинается в стилистически нейтральном тексте и не относится к средствам создания художественного образа, то всё просто: сочинитель считает, что он писатель, а не читатель, поэтому читает редко и ничем не интересуется. Редактора на него тоже нет, видимо, в издательстве экономят на всём, что не даёт немедленной зримой выгоды. Если произведение помещено в Интернете, то его могли покалечить при наборе.
"Скрепя сердце" - не единственное идиоматическое выражение, которое массово понимается неправильно. Есть ещё и "кур во щи", которое переделывается "в ощип". Ещё худшая история приключилась с песенкой, которую напевал киноперсонаж Максим:
там был не шар, а шарф.
Встречаются такие казусы в языковой практике, где-то логика у массового носителя речи срабатывает не так, как подразумевалось изначально.