Последующий доступ, по-моему, куда важней непосредственно чтения. Если нужно потом читать куски то QByteArray будет и удобней и эффективней. Если же последовательной чтение - то без разницы. Непонятно почему вы задались вопросом именно про чтение - по-моему не самое узкое место. И, кстати, уверен, что внутри кьют так и читает в заранее выделенную память, только это QByteArray. Там ведь тоже есть data() и в этом смысле вообще никакой разницы нет.