Wikipedia, of all things, has the ESRI shape file spec:

According to that there should be *four* values for POINTZ types -- not
three nor two.

So, try splicing in this code round line 448 and see if it gets you any joy:

                else if (recordType == POINTZ)
                    Coordinate pt = new Coordinate(byteBuf.getDouble(),
byteBuf.getDouble(), byteBuf.getDouble());

                    // The next byte is the "measure" value which we don't
                    // but read in anyway to check with debugger.
                    double measure = byteBuf.getDouble();
                    geom = geomFactory.createPoint(pt);
                } // ... rest of else if block

You might have to update isSupported() to let it know that POINTZ types are
[log in to unmask]