Basically Avro Generic provides serailization for dynamic data structures. Avro Specific on the other hand generates typed Java (and other language) objects from the schema at compile time with getters and setters built in SerDe. This is similar to Protobuf - I don't know Thrift that well. IndexedRecord is the parent class of both GenericRecord and SpecificRecord so by moving the support up a level I aim to cover both communities. 

AvroParquetReader is a Java generic so I assume Avro Generic users would be able to instantiate a AvroParquetReader<GenericRecord> and Avro Specific users an AvroParquetReader<Car> for example. If you are suggesting I inherit from this to create an AvroGenericParquetReader we could do this for convenience.

Would be happy to adapt to Tom White or anyone else's input on the matter.