Because there's no way to get it from the printer without constantly querying it. It can be queried from the printer's firmware using
M114, however in order for that information to be actually useful (e.g. in order to use it to trigger timelapse snapshots or do other nifty stuff) that command would have to be issued after any command sent to the printer and also in certain time intervals (since the printer might have moved the head due to being instructed to do that via an LCD menu or because it's printing from SD). The connection between OctoPrint and printer is limited to serial speeds, so 250000 baud at max. This transmission speed can already be maxed out now by just streaming gcode with a lot of short moves (e.g. curve segments). Imagine what would happen if OctoPrint added another command just to query the current head position from the printer after every command sent to the printer in such a scenario. The transmission rate would half, leading to blobby ugly prints, and all that just for some fancy display of where the head is right now or the possibility to trigger timelapse pictures always at the same position. That's just not worth the loss in quality.
Also be aware that OctoPrint can't track that information on it's own either by just adding up any moves sent via it - what about moves not triggered by itself but the printer (see above as to how)?
If you desperately need to have the printhead position displayed somewhere, take a look at a custom feedback command instead. But unless firmware starts to send this information with every acknowledgement of a received command, this won't get added to OctoPrint's core code due to a wrong cost/usefulness ratio.