Now that this is necro’ed, Unity, to demonstrate why this is critical. How we perceive an animation is by time difference and appearance difference. So if at this moment something is here and the next moment it is there, we see that it moved. Moreover it is an integral of movement, much like the concept of impulse in physics. For example :

Notice that the left looks like it is continuously pulsing/breathing, and the right looks like it is bouncing. But in fact it is the same animation.
If the animation is always looping, the “stillness” that is supposed to be at the end could never be seen at design time. The result is we perceive the animation differently than at runtime and couldn’t make correct judgement at design time. Imagine a sine wave-like animation. If it is looping, the integral that produce the impulse feel follows a cosine function. So there is no sharp edge, with the steepest value when sin is 0. However in real use of this animation, there is a big impulse at the end from an integral of the end of an interval of a sine wave, to the constant that comes next. (That is produced by the animation not playing, not actually a part of animation.)
So being able to toggle off the looping is not just a quality of life change, it affects the appearance of the animation that the design tool is not able to accommodate. (perceived, not in the data. since our brain and player’s brain interpret the data as an animation but the Animation tab just evaluates a state at a time.) Of course I don’t know the source code, but I feel like this should be a really easy change for you to add long time ago. (In fact I think looping would require more coding)
Unity prooving itself with cinematic projects is nice, but that doesn’t mean Animation tab is powerful enough for everything because those are not interactive media. The cinematic project may never requires short/reusable animation.
The only thing that does this right is PlayableDirector + None/Hold ending mode of the playable graph. Since PD follows Playable disposing the animation stops properly. Play again on-demand works. Play again (restarting) while it hasn’t ended yet works. So here I see everything I wanted except that it is tied to PD. And it even use the same Animation tab that loops like crazy without PD. That means this kind of behaviour is already kinda possible but not open for user yet. Is it just a step away to allow this?
On a related note, Animation via PD still has some annoyance. The Timeline tab behaviour that is always entering “Preview” mode whenever I click on a GO with PD should be able to turn off. Clicking on any object with PD and you cannot move it, because it is in Preview and all of your movement will be undone by the Timeline. So each click, you have to click the Preview button to get out of the mode. (Noted by position box turning light blue) I thought there should be an option in the top right little menu, but it isn’t there. The only way is to completely kill out the Timeline tab to stop it from stealing control (hiding as an inactive tab didn’t work, and this is even more annoying since it take me longer to figure out it is currently in preview by a hidden Timeline tab somewhere on the screen) but it is a hassle to kill it out and bring it back. I have to make an another dock preset just to have a version with Timeline and without it.
And also, this problem too : How to adjust the curve multiple vector elements/XYZ value together?