Because the Earth geometry exists in an ECEF coordinate system, and you are not creating a local reference frame.
In order to apply heading/pitch/roll relative to a point on the Earth, you first need to establish a local reference frame (which is just a local tangent plane at a specific point).
You can also create this reference frame matrix directly with the GeoPoint::createLocalToWorld method. This is what GeoTransform does.
If you only know your ECEF point, you can call GeoPoint::fromWorld to get a GeoPoint, and then call createLocalToWorld to create the reference frame matrix.
Hope this helps.
Glenn Waldron / Pelican Mapping