Они служат различным целям.
translate
может заменить только отдельные символы произвольными строками, но один вызов может выполнить несколько замен.Его аргументом является специальная таблица, которая отображает отдельные символы в произвольные строки.
replace
может заменить только одну строку, но эта строка может иметь произвольную длину.
>>> table = str.maketrans({'f': 'b', 'o': 'r'})
>>> table
{102: 'b', 111: 'r'}
>>> 'foo'.translate(table)
'brr'
>>> 'foo'.translate(str.maketrans({'fo': 'ff'}))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: string keys in translate table must be of length 1
>>> 'foo'.replace('fo', 'ff')
'ffo'