Sure, the protocol could have been designed that way.
The benefit would be that a block would be slightly smaller, since it only needs to contain a single address, rather than a full coinbase transaction.
However, a benefit of the current system is that miners have the flexibility to pay out their coinbase transaction in some other way than sending it all to a single address. For example, a pool can distribute the coinbase transaction directly to its members in proportion to the amount of work they have done. This removes the need for the pool manager to hold those funds, even temporarily, and gives the members some additional assurance against fraud by the manager. It also lets miners take advantage of more sophisticated transaction types, such as multisig, segwit, etc.
The current system also means that coinbase transactions are handled the same as other transactions, using the same code; the only difference is that the inputs need not be checked. Under your proposal, there would need to be special code to create the transaction, which would be another possible source of bugs and increase the "attack surface".
On balance, I think the current way is better.