I just submitted a pull request that does the split:
https://github.com/Parquet/parquet-mr/pull/79
that way ValuesReader has just skip() and the individual subclasses of PlainValuesReader implement it in the right way.
ValuesReader still need a read...() method for each type because java treats primitive types differently from objects.