This is by design: in the second (failing) case, "failing.pvr" contains 11 mipmap levels while Unity creates a Texture2D with 12 mipmap levels for the indicated width/height, so it is indeed correct to say that not enough data was provided.
A way to resolve this is to indicate the number of desired mipmap levels in the Texture2D constructor.
For example, in this case, line 26 in PVR_ERROR.cs can be replaced with:
Texture2D image = new Texture2D(width, height, TextureFormat.ASTC_6x6, mipchain, false);
Using the above, the error disappears and the expected result can be seen.