Likely because y=256 is not a tracked block, there is no associated light value. Thus a null value is being passed for the light value. For integers, the turns out to be a 0, which would indicate allowable spawning positions. Suggest that light levels for blocks where y > max_height return the current sunlight level.
The following is based on a decompiled version of Minecraft 1.9 using MCP 9.24 beta.
The reason for this is that the method net.minecraft.world.World.getLight(BlockPos, boolean) uses for y values higher than 255 the light level of the block at the height 255. If there is a block at this position (like it is shown in the screenshots) the light level is 0. Instead the method should return 15 as no block can be above this position to prevent the light from lighting this position.
Code analysis by Marcono1234 is good. I confirm that the light is calculated on the block at 255 : mobs burn on transparents blocks (glowstone, piston, barrier). mobs spawn when it is the day if they are on a solid block (stone).
I can confirm that mobs don't get set on fire at world height as of 1.14; however I wasn't able to confirm yet whether mobs can actually spawn there in the daytime.
Maybe this issue only happens in worlds that have been opened in a snapshot, so that the light map was messed up? I'm not able to reproduce (in a new world) either.
I have tested for this issue on Minecraft 1.8-pre1 [ 15088 ] and get the same result.