The boundary of union is the union of boundaries when the sets have disjoint closures

You can actually get by with a little less: If $\overline{A} \cap B = \emptyset = A \cap \overline{B}$, the result holds.

As you have noticed, we have that $\partial ( A \cup B ) \subseteq \partial A \cup \partial B$. Suppose that $x \notin \partial ( A \cup B )$. There are two cases:

  1. $x \notin \overline{ A \cup B } = \overline{A} \cup \overline{B}$. In this case it can easily be shown that $x \notin \partial A \cup \partial B$.
  2. $x \notin \overline{ X \setminus ( A \cup B ) }$. Then $x \in X \setminus \overline{ X \setminus ( A \cup B ) } = \mathrm{Int} ( A \cup B )$. Without loss of generality assume that $x \in A$, and since $A\cap \overline B=\emptyset$, then $x\in X\setminus\overline B$, which implies that $x\notin \partial (B)$. Furthermore, it can be shown that $U = \mathrm{Int} ( A \cup B ) \setminus \overline{B}$ is a neighbourhood of $x$ that is contained in $A$, and so $x \notin \partial A$. Thus $x \notin \partial A \cup \partial B$.

I'd like to slightly strengthen the accepted answer's result to that which I was looking for when I came across this question:

If $A \cap B = \emptyset$, then $(\partial A \cup \partial B) \backslash ((\partial A \cap B) \cup (A \cap \partial B)) \subseteq \partial (A \cup B) \subseteq \partial A \cup \partial B$.

The second inclusion is noted by the OP, so I'll prove the first. Write the first set in the above chain as $S_{AB}$. If $x \in S_{AB}$, then by symmetry between $A$ and $B$ we may assume WLOG that $x \in \partial A$ (implying $x \notin B$ by the definition of $S_{AB}$), so every neighborhood of $x$ intersects both $A$ and $A^c$ (the complement of $A$). We consider two cases:

  1. $x \notin A$. In this case, $x \in A^c \cap B^c = (A \cup B)^c$, so any neighborhood of $x$ intersects both $A \subset A \cup B$ and $(A \cup B)^c$, showing $x \in \partial (A \cup B)$.

  2. $x \in A$, which then implies $x \notin \partial B$. In this case, we may find a neighborhood $U_0$ of $x$ contained entirely in either $B$ or $B^c$, and since $x \in B^c \cap U_0$, we must have $U_0 \subset B^c$. Thus for any neighborhood $U$ of $x$, $U \cap U_0 \subset B^c$ intersects $A^c$, and hence $U$ intersects both $A \subset A \cup B$ and $(A \cup B)^c = A^c \cap B^c$, showing $x \in \partial (A \cup B)$.

In both cases, then, $x \in \partial (A \cup B)$, showing $S_{AB} \subseteq \partial (A \cup B)$.