True (only recently), but I think that what it does will be clearer if we show the code to implement it in Snap!. Jens added it as a primitive so that it would be a hyperblock, so that you can (shallow) copy a list by using it as the input to ID.
Oh, and the other side of that feature is that you can't use the primitive ID to report its input without copying, supposing that input is a list.
The manual shows three different attempts at reporter IF. The first, straightforward one works for simple cases but generates infinite loops in recursive functions. The second, the one that needs ID for simple inputs, declares the second and third inputs to be reporters, so there are rings in the block, which means you can't type into them for numbers or text, hence the need for ID. The third one combines the best features of the other two by declaring those inputs to be Any (Unevaluated). That third version works exactly like the primitive. I suspect you got confused about this because you were reading the second one in the manual, and so you thought you were supposed to put an explicit ring around that second input. Your picture corresponds to the second manual version, not the third.
Oh, right, it's pretty recent that you can put a script with a REPORT block in a Reporter-type input slot. And, again, although we do have the primitive ID hidden in the SQRT block's menu, I think readers unfamiliar with the idea of the identity function will understand it better if they see the (very simple) definition. We don't pay by the pixel. :~)