Потому что есть этот кусок кода:
async with state.proxy() as data:
if type(data.get('photo')) is list:
data['photo'].append(message.photo[-1].file_id)
return
else:
data['photo'] = [message.photo[-1].file_id]
если тип - список:
выйти из функции
если не список:
сделать списком
Прилетает первое фото - делаете объект списком, прилетает второе и последующие фото - выходите из функции
Ну и помимо них есть зачем-то такие куски:
for i in range(1):
- просто зачем?
if message.photo:
- условие не может не выполниться в контексте этого хэндлера
async with state.proxy() as data:
del data["photo"]
- выполнение никогда не дойдет сюда