The SEP-8 client can choose to prepare the transaction ahead of time such that the server does not need to revise it. That is documented in the Transaction Composition section:
https://stellar.org/protocol/sep-8#transaction-composition
However, SEP-8 doesn't define how a client could determine exactly which alterations were required. SEP-8 shows two typical configurations, one where the liabilities are maintained and one where the accounts are completely deauthorized afterwards.
Maybe SEP-8 needs an /info endpoint that would tell a client the strategy the server uses. Clients that don't recognize a strategy can simply send the transaction and handle the revised response. Clients that choose to optimize the UX can implement the strategies on their side to avoid the revised response.
All of this assumes the strategy servers use is consistent for all customers and all transactions for each customer, which I'm not sure, but may not be the case.