The reason for a separate API may just be due to punches and readers only being streaming character or byte devices.

Start reading might be operator assisted or automatic depending on the punch / reader and how the operator configured it. Often, the read would be initiated in software, then an operator presses a go button.

Flow control is a thing. Readers and punches will stop and start xon xoff ctrl q ctrl s style too. Edit: Nope. It is RTS, CTS hardware signals in almost all cases. Whoops!

A tape can be punched with block formatting of course. I never saw this happen.

Gcode is blocks! G1 X12 Y13(eob)

But they are variable and can reach darn near a page of ASCII text (256 bytes )for a single code, but the average might be 32.