The following is based on decompiled version of Minecraft 1.9 using MCP 9.24 beta. All method and class names are the names used in the decompiled version.
The reason why this happens is because the method net.minecraft.client.renderer.EntityRenderer.getMouseOver(float) only sets the field net.minecraft.client.Minecraft.pointedEntity to the value of the field net.minecraft.client.renderer.EntityRenderer.pointedEntity if this.pointedEntity instanceof EntityLivingBase || this.pointedEntity instanceof EntityItemFrame. However the player can spectate all entities that are valid values for net.minecraft.client.renderer.EntityRenderer.pointedEntity. Removing this requirement should solve the problem.
Confirmed for 14w10c, but we shouldn't be able to spectate them.