Fall damage is consistently inconsistent, in that it doesn't deal the damage it should.
Expected: (Length of fall in blocks) - 3 = Damage (1 = half a heart)
In other words, 4 blocks will deal half a heart of damage. 23 blocks is fatal to a player or an unarmored humanoid mob.
What happens: The problem occurs as you approach the maximum height before death. At 22 blocks, you will be left with 18 health, rather than 19. A fall of 23 is still fatal.
This was tested extensively with varying heights, not restricted to full blocks.
A water flow pushes creepers off a cliff. It is a well known fact that mobs may jump in water before the fall, so by using trapdoors to lower the roof, they are held down, preventing this random factor.
The block they land on was switched for a slab, as well as all 8 possible layers of snow. The results were still the same: Either they are left with 18 health, or they die instantly.
They never end at 19 health.
This should not be possible. However, it may be related to water, as you can achieve 19 points of damage if you push it off the cliff without water, provided the mob does not jump.