The issue can be clearly seen if you put it into physics visualization mode:
The physics engine never notices that the tail rotates!
Now, why is this? This is because compound objects don't necessarily update the physics mesh other than at game start. I'm not entirely sure of all the details, but you this issue with parenting and physics not always doing what you expect comes up quite regularly.
The reason why changing the constraint to the tail makes the joint fail entirely is that when the parent has 'compound' enabled, the child's mesh is appended to the parent's mesh, and a physics mesh is generated for the parent+child object. This physics object is assigned to the parent, and the child is ignored by the physics engine entirely.
As to the solution, There are two ways:
1) The first is to disable the parent's "compound" option, preventing the child from being ignored by the physics engine. Then the two objects collide, so one of them will have to be set to ghost to prevent the perpetual collision sending the parent and child flying.
2) The second method is to attach the child to the parent not by parenting, but with a second rigid body joint. The issue with this is that, if you wish to steer the tail, you have to create that constraint from python so you can use the rather poorly documented constraint.setParem() method to control it.
This is the method I use whenever I simulate vehicles, such as this n-wheel steer thing:
(I'm actually quite proud of the math controlling that vehicle. It calculates the wheel velocities and angles for a wheeled vehicle to move along a certain path with minimal wheel slip)