Well I haven't worked with Zeos, but I have worked with Oracle and I see that the order the columns appear is a tipical query to the DB dictionary, without consider the order column. It's a typical error. Maybe a Zeos bug.
Another detail, is that the columns of a Oracle table appear always, like PK. Maybe another Zeos peculiarity.
Oracle is a very special DB. And developing for Oracle is always hard.
I will check your code and see if I can contribute in something. Currently I'm developing some similar but just for Oracle.