As far as my understanding goes, transactions of type UpdateApplication is primarily for changing the actual TEAL of a smart contract.
However I have also seen UpdateApplication used for adding a new global state value https://developer.algorand.org/articles/linking-algorand-stateful-and-stateless-smart-contracts/:
// check if this is update ---
int UpdateApplication
txn OnCompletion
==
bz not_update
// the call should pass the escrow
// address
txn NumAppArgs
int 1
==
bz failed
// store the address in global state
// this parameter should be addr:
byte "Escrow"
txna ApplicationArgs 0
app_global_put
int 1
return
Is there a particular reason for using UpdateApplication to store state, as opposed to just using the generic application call?