So, I'm answering my own question, in case anyone else has it.
I do, still believe, the documentation shows the incorrect return type and it should be an OCIParam * and not a ub2.
However, all "List Attributes" that you get back with OCIGetAttr(), including OCI_ATTR_LIST_SCHEMAS, OCI_ATTR_LIST_OBJECTS and OCI_ATTR_LIST_COLUMNS allow you to call OCIAttr() on their parameter handle. If you call OCIGetAttr() with the attribute OCI_ATTR_NUM_PARAMS, it will let you know how many elements there are in the list. Otherwise, iterating over an empty list will result in a segfault.
This is outlined in "8.2.12 List Attributes" section.