I think that originally "printer-uri" was going to be a "virtual" attribute,
as you thought. But later (last Fall?) we changed the Model and Protocol
document so that the "printer-uri" attribute was required to be supplied
by the client and include in the operation attribute group in the IPP packet
(which is defined by the application/ipp MIME type). The thinking
was that we wanted the IPP packet and MIME type to be independent
of the transport. So that we could send IPP over any transport, such
as SMTP or FTP, for examples.
(BTW, the Protocol examples forgot to make the change to include
the "printer-uri", so maybe that is part of the reason you think that
"printer-uri" is not needed in the Operation Attributes group in
the IPP packet.)
See Section 3.1.3 Operation Targets in the Model:
The operation target is a MANDATORY operation attribute that MUST
by included in every operation request.
(The updated Model in 3.1.4 Operation Targets goes further so require
that the Operation Targets come right after the char-set and natural-language
in the Operation attributes group).
See also Section 220.127.116.11, which does not have an "*" next to
"printer-uri" meaning that the client MUST supply it in the operation
So if we change our minds back to not putting the "printer-uri" target
in the IPP layer packet, we need to change the Model and the Protocol