А нельзя ли как-то упростить?
На вкус и цвет, конечно, но я бы первым делом избавился от всех этих symbol и use. Без них воспринимать код проще, а из условий задачи вроде бы не следует, что они прямо нужны:
<svg width="200" height="300">
<mask id="my-mask">
<g stroke="gray" stroke-width="12" fill="white">
<circle cx="33%" cy="30%" r="20%" />
<circle cx="52%" cy="62%" r="32%" />
</g>
</mask>
</svg>
<!-- 1 -->
<svg width="200" height="300">
<image href="https://picsum.photos/id/1/200/300" width="200" height="300" mask="url(#my-mask)"/>
</svg>
<!-- 2 -->
<svg width="200" height="300">
<image href="https://picsum.photos/id/2/200/300" width="200" height="300" mask="url(#my-mask)"/>
</svg>
<!-- ...100500 -->
<svg width="200" height="300">
<image href="https://picsum.photos/id/3/200/300" width="200" height="300" mask="url(#my-mask)"/>
</svg>
Ну а если вы хотите use, то да, все так, как вы и написали - много id, и следить, чтобы они случайно не продублировались при сборке страницы, а то начнется магия.