Потому что вы не видите разницы между функцией и результатом её вызова.
Добавьте
() =>
перед
openLightboxOnSlide(key)
(кстати, а какого хрена переменная, содержащая индекс, названа key?).
Но вообще, дополнительный метод не нужен. И объект хранить в lightIndex не надо. Пусть индекс принимает по умолчанию значение, которое не может быть корректным индексом (например
null
, или
-1
) - это будет означать, что показывать ничего не надо:
const [ lightIndex, setLightIndex ] = useState(null);
<img onClick={() => setLightIndex(key)} />
<ReactBnbGallery
photos={photos}
show={lightIndex !== null}
activePhotoIndex={lightIndex}
onClose={() => setLightIndex(null)}
/>