в данном случае вроде бы ничем. Но lea можно использовать и по-другому. Например lea eax,[eax+eax*2] или lea eax,[eax+ebx+1]. Для того и ввели
Ассемблер когда это возможно заменяет lea на mov offset, например при lea dx,message. Как написал MSoft, с lea можно использовать такие операнды. Замечу, что не стоит путать скажем mov ax,[bx+si+100] и lea ax,[bx+si+100] - первая команда положит в AX слово из памяти по этому адресу, а вторая - сам адрес.
TASM так делает, пока не скажешь nosmart Также в режиме smart он когда возможно меняет дальние переходы на близкие, на 8086\88 разрешает писать push const и push\pop [addr] и что-то ещё вроде оптимизировал. Про другие ассемблеры не знаю.