Looking into it. Will provide a quick description of how it's handled in HCat:
In HCat, we pass along tableProperties using HiveStorageHandler.configureInputJobProperties and HiveStorageHandler.configureOutputJobProperties. HBaseSH sees only this.
To standardize usage across all IF/OF cases, we have a storage handler called FosterStorageHandler that acts as a wrapper around the generic IF/OF cases that do not have storage handlers, so that the rest of the HCat code can still stick to using StorageHandlers as-is and not worry about the underlying system.
To make FosterStorageHandler work with orc, we had to change orc so it accepted table property overrides from jobconf as well (since we have to conform to mapreduce interfaces only, and that has no knowledge of tables), and had FosterStorageHandler set up jobconf appropriately with any overrides from table properties.