i think the purpose of a queue is to drop packets, some of them, not too much, not too few.
in my opinion the purpose of the size of a queue is to have room to accommodate enough packets to be able to receive high priority packets at the instant it has lower priority packets on it
too small queue may be full when a high priority packet arrives, dropping it = fail
too big queue increases latency too much degrading performance of applications and making more difficult for applications to detect the bandwidth available and work accordingly
take a look at this page, there is better explanation than i can do