For a simplistic understanding, think of OPC UA as a point to point communication between a client and server and MQTT as a chat application between multiple clients connected to each other thru a chat (MQTT) server. The chat takes places on different topics that clients want to publish and subscribe to. Chat is initiated by MQTT clients when a tag change is detected in its database. The client initiates a chat on a specific topis when a change is detected and it is received by all clients that subscribe to that topic. OPC UA is based on industry standard API’s and its purpose is to allow interoperability between diverse SCADA systems and third party applications who understand this specification.
So OPC UA and MQTT are complimentary technologies to each other not competing technologies. The first defines address space of a controlled plant with its up-to-date real time status data and the second one allows you to synchronize the address spaces of distributed servers (OPC or non-OPC) on LAN/WAN. MQTT compatible hardware with I/O can as well be an MQTT client which will directly communicate with other MQTT clients to read/write data in their address spaces.
Of course this is too simplistic understanding and there are advanced concepts such as tag change subscription and async method calls, data modelling techniques etc in OPC UA and store and forward and cloud injectors and spark-plug specifications etc in MQTT etc, but I guess the simplistic model is important to have first.