PlutusTx inherits its qualities from Haskell, and thus has many of the same benefits/drawbacks:
Pros: auditability, maintainability, and upgradeability of code.
Cons: developers' unfamiliarity with functional programming. High resource usage.
PlutusTx is especially useful when safety and correctness are the #1 priority, such as in massive DeFi dApps or any other mission critical system.
On the other hand, PlutusTx is relatively resource-hungry (in terms of script execution units), which limits the size of deployable contracts. Although it may be possible to address some of these limitation through optimizations/changes to Plutus Core (i.e. CIP-38, CIP-85 and others), newer languages like Aiken and Plu-ts offer a lighter-weight execution budget and greater accessibility to a broader set of developers.
Non-turing complete DSLs like Marlowe offer even greater developer accessibility via low-code or even no-code contract deployment.
TLDR; all of these are just tools in the toolbox. All (or most) of them will be future smart contract langugaes.