My driver reads entire UDTs and/or AOIs when any two elements of that structure are read together (same subscription pace). Yes, this would be very non-optimal for instructions like P_PIDE. (Which is an abomination, IMNSHO.)
IA's driver does look at placement and gaps when optimizing a UDT.
Drivers don't see tag groups. Driver's see all OPC items that belong to them, and their pace. Only the pace differentiates how stuff is subscribed.