Когда я слышу этот фразеологизм, сразу почему-то вспоминаю песню Игоря Саруханова. Там то ли "скрипка-лиса", то ли "скрип колеса". Так и здесь: кто-то говорит "скрепя сердце", а кто-то - "скрипя сердцем". А правильно как? Скрипеть или скрепить? Правильно - "скрепя сердце". Мы путаемся потому, что деепричастие "скрепя" стало устаревшим и самостоятельно давно уже не употребляется. Да и по нормам русского языка правильнее будет "скрепив". Но в составе фразеологизма слова остаются неизменными. Есть еще церковное слово "окропя" - кровный "брат"нашего деепричастия...
Многие говорят и пишут так: «скрипя сердцем». Вероятно, путая это выражение с другим – «скрипя зубами». Разница в том, что зубами действительно скрипят, а вот сердце – скрепляют. «Скрепя» – это устаревшая форма деепричастия «скрепив»...