If a MIDI device knew beforehand which bytes are status bytes and which are data bytes, it would be possible to use all 256 values for both kinds.
However, MIDI was designed to use as few bytes as possible, and this is done by mixing up status and data bytes in unpredictable ways.
So the most significant bit is always needed to differentiate between them.
For example, with running status, channel mode message status bytes that are identical to the last one can be omitted:
three notes with running status
90 3C 7F 90 3C 7F
90 40 7F 40 7F
90 43 7F 43 7F
Furthermore, system real-time messages can be inserted in the middle of other messages; for example, a timing clock:
90 3C 7F 40 F8 7F 43 7F