The only thing I can say with certainty is that in modern Hebrew, saba and savta are the words commonly used. (Note that it is savta, and not safta. I think that switch - also found between Rivka and Rifka - is due to both v and f being labiodental fricatives, one voiced and one voiceless, and when followed by a stop consonant like k or t, sound very similar.)
However, the term seems fairly recent. The 1943 official dictionary of kinship terms in Hebrew (as I discussed here) lists "grandfather" as sav סב and "grandmother" as savah סבה, but adds the following note:
They then add a smaller line (I assume added after 1943):
השמות סַבָּא, סַבְּתָא מותרים ככינויי חיבה, וניקודם בבית דגושה אע"פ ששרשם ע"י, מתוך היקש למלה אַבָּא
The names saba and sabta are permitted for use as terms of affection, and the letter bet is accented [not sure what this part means - any ideas?] due to the similar sound of the word abba.
השמות סַבָּא, סָבְתָא (בי"ת בלא דגש) מותרים גם בשימוש כללי ולא רק ככינויי חיבה.
which justifies the general usage of the words, and allows the common pronunciation savta, where the bet does not have an accent.
Horowitz (page 100) describes the word saba as follows:
It is a word created by the little children in Israel, following closely the word "abba". The children were told to call this relative סב (sav) but it was simply much easier for them to link both these older loving male adults with these two similar sounding names, אבא (abba) and סבא (saba).
However, Ben Yehuda, in his dictionary which was written not long before, does not list sav, saba, sava or savta as meaning grandfather or grandmother. I don't have the ability to do a full text search through the entire 17 volume dictionary (but wouldn't that be amazing?). However, I did see that one of his definitions for zaken זקן is "grandfather", so perhaps that was his preferred word.
I'd really like to know what was the common word in Hebrew for grandfather in the first half of the 20th century. Perhaps one reason why zaken wasn't adopted can be found in the entry for the generic "grandparents" in the Vaad HaLashon list. They suggest the term הורים סבים horim savim, and explain:
Both zaken and sav mean "old". Sav is originally Aramaic, and corresponds to the Biblical Hebrew sav שב. This word is closely related to the word seiva שיבה - meaning "old age" and "grey hair". But in these biblical mentions (Iyov 16:10, Melachim I 14:4) it doesn't mean grandfather - only "old person". In fact, I couldn't find one example in the entire Tanach where a word was used to refer to "grandfather"! I find this very surprising. I know we've seen an example before of a Biblical Hebrew word that didn't make it into the Bible, but I figured that grandfather would be a much more common word.
שם כולל לסב ולסבה; עדיף השם הוֹרִים סָבִים מן השם הוֹרִים זְקֵנִים שעלול להטעות כאילו הכוונה לגיל ההורים
A general term for the grandfather and the grandmother; the name horim savim is preferable to horim zekenim הורים זקנים because the later is likely to confuse people who will think that it refers to the age of the parents.
As far as Talmudic Hebrew, Jastrow has sav and sava as "grey, old; elder; ancestor; scholar". He does have one mention of savta as grandmother - Bava Batra 125b. His third definition of zaken is "grandfather, ancestor", although his example is of the word being used as an ancestor, not a literal grandfather. Neither Ben-Yehuda nor Even-Shoshan bring Talmudic examples of sava meaning "grandfather". However, in the course of researching this post, I did find a few examples where sava clearly meant grandfather: Ketubot 72b, Yevamot 38a and 40b. (I also found a few examples of zaken, as well as avi av אבי אב - "father's father".) Here too, the ability to perform a comprehensive search of all Hebrew literature would help determine what names were used when for grandfather and grandmother.
What about great-grandfather and great-grandmother? The 1943 list suggests av-shilesh אב-שילש and em-shilesha אם-שלשה. However, these names weren't adopted, but instead the recommended terms are saba raba סבא-רבא and savta-rabta סבתא-רבתא. Rabta is the Aramaic feminine plural, and is therefore more correct. However, if usage is any indication, the proper form might not win out. Look at the following Google results:
- סבתא רבא has 11,000 results
- סבתא רבה has 7,910 results
- סבתא רבתא has 3,350 results