Short answer: no difference.
Long answer:
ZReadOnlyQuery descends directly from ZReadOnlyDataSet, and ZQuery descends from ZDataSet, which then also descends from ZReadOnlyDataSet, but adds functionalities of cashing and updating.
So, ZReadOnlyQuery is "lighter".
In practise, you can hardly notice any difference.
If you are absolutely sure that you will use it only for reading, use ZReadOnlyQuery.
If you are not sure if you might want later to decide to use it for updating, use ZQuery with ReadOnly = True, so you can easily set it later to False and use it for updating database.