Flatten the array first, insert and re-aggregate.
UPDATE MyTable
SET MyDict = (
SELECT ARRAY_AGG(
IFF(
f.value:key2 = '123',
OBJECT_INSERT(f.value, 'key2', 888, TRUE),
f.value
)
)
FROM TABLE(FLATTEN(INPUT => MyTable.MyDict)) t
)