NeoNДавно я 51 занимался. Может быть и ошибаясь

Размер команды acall - 2 байта, команды lcall - 3 байта, поэтому в одном случае шина успевает переключаться, в другом - нет. Введение nop просто даёт дополнительный такт. Надо смотреть времянки памяти и процессора. Если на шине сидят еще устройства, но они могут вносить дополнительную емкостную нагрузку и затягивать фронт. Тут надо смотреть характеристики микросхем. Я порт P3 использовал для переключения банков, всё работало без сбоев, просто ёще раз внимательно просмотрите времянки.