Потому что это вложенные циклы, а не параллельные.
Если тебе нужно удалить из А все элементы, которые есть в B, при этом, длины файлов недостаточно большие, чтобы занять всю твою оперативку, можно сделать так:
with open('A.txt') as a, open('B.txt') as b, open('finish.txt', 'w') as finish:
a_items = [l.strip() for l in a]
b_set = {l.strip() for l in b}
finish.write('\n'.join(item for item in a_items if item not in b_set))
Если в finish.txt не важно, не будет дубликатов из А или нет (или, например, A.txt содержит только уникальные значения) и порядок не важен тоже:
with open('A.txt') as a, open('B.txt') as b, open('finish.txt', 'w') as finish:
a_set = {l.strip() for l in a}
b_set = {l.strip() for l in b}
finish.write('\n'.join(a_set - b_set))