I agree. I've never seen "piccolo/piccolo" and "grande/grandi" used as young and old. I think if it's going to have more than one meaning, there should be a note on the page in reference to these words so that they tell us ALL the meanings. Otherwise, it's like we're all being ambused.
This isn't a basic rule, but I think it helps:
In all of them, after the definitions you have "Forme flesse di..." and it gives you the possible variations. For rosso you have rossa, rossi, rosse, and for piccolo you have piccola, piccoli, piccole. For grande its just grande, grandi.
Old is indeed vecchio, but grande can be used to mean old (or older) in a similar sense to the way that a lot of English speakers refer to their elder sibling as a 'big brother' or 'big sister' and their younger siblings as 'little brother' and 'little sister'. Even if the genetic lottery has the actual size discrepancy not being that big or one of them overtaking the other.
They might not be in the hints, but the hints are not aware of context and are not to be fully trusted. In this context piccola and grande can mean young and old without the individual words meaning that all the time. As one of the options for translating this phrase.
The word for tall is "alto", the word for big/large is "grande". I don't agree that "I am tall" would sounds more correct... if so, the sentence would have begun, "Lei è bassa ... " [feminine "short", as in height]. In English, little and small have the same meaning, but if you talk about height you would normally say "short" instead of "little", especially if you are then comparing them to a tall person. It would not sound right to say "She is little, he is tall". Does that make sense?