Because that is how the protocol was written. The client just has a list of private keys and knows nothing else.
Again, I know how the protocol is written, but I don't understand
why it's written that way. Why can't it connect with the peers from the Bitcoin network? It doesn't have to receive any blocks just to send them a transaction. It remains a lightweight client, it just doesn't send the transaction to a server, but broadcasts them instead.
If you are sending it out through a fully synced node that has a known set of protocols / commands then is there is an issue you can reply with a known error code.
The lightweight client could also have the set of rules and could return an error in case the full nodes you sent the transaction reject it.
Otherwise if you want to transmit to the network you still need a list of nodes that will accept it, or you have to run your own node or at least get a list of peers you can transmit to.
You don't need to run a node to have a list of peers.