Хорошая привычка - всегда использовать необработанные строки при работе с шаблонами регулярных выражений:
In [45]: re.sub(r'\\', r'+', line)
Out[45]: 'abc+def+n'
Чтобы ответить на ваш вопрос, Python интерпретирует '\\\\'
как два символа обратной косой черты:
In [44]: list('\\\\')
Out[44]: ['\\', '\\']
И правила регулярных выражений интерпретируют два символа обратной косой черты как одну буквальную обратную косую черту.