чем это может быть вызвано?
Тем, что значение isLoadError меняется только с false на true. Надо его как-то обратно сбрасывать.
Можно следить за значением src, если изменилось, выставлять false:
useEffect(() => setIsLoadError(false), [ src ]);
Другой вариант - в ImagePopup пересоздавать экземпляр компонента Image при изменении данных карточки, указав соответствующий ключ:
<Image key={card ? card.link : 'hello, world!!'}