You can't use a JSON path with wildcards in a JSON_SET() function.
https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-set
... an error occurs if the json_doc argument is not a valid JSON document or any path argument is not a valid path expression or contains a
*or**wildcard.
So you can change only one value at a time with JSON_SET(). I assume you have a variable number of entries in the JSON array, it isn't always two as in your example. If you want to change all of them, you'd have to write a JSON_SET() with multiple paths.
JSON_SET(gameresults, '$.scores[1].seen', true, '$.scores[2].seen', true, ...)
Another solution would be to fetch the whole JSON document into your application, modify it however you want using client code, and then post then whole JSON document back to the database.
It would be much easier if you did not store your data in JSON format. Store them in a second table with one row per score, using normal columns, not JSON. Then you can use very simple SQL to update them:
UPDATE gamescores SET seen = true
WHERE gameId = 'acaa2a99-a24c' AND scoreId = '14916624';
You can store data in normal rows and columns, but still format a JSON response when you want to return them to your C# application. Read about JSON_ARRAYAGG() and JSON_OBJECT() functions.
Answer from Bill Karwin on Stack Overflow