pgfsys-dvipdfm.def は TikZ の patterns ライブラリをサポートしないが,pgfsys-dvipdfmx.def はサポートしているとのことでしたので,試してみたところ,次のような不具合を見つけました。
次のソースの [1]~[5] の行の,いずれか1行だけをコメントアウト解除して dvipdfmx にかけると,[1], [4], [5] では正しくパターンが塗られるのに対し,[2], [3] ではパターンが消えます。
\documentclass[dvipdfmx]{article}
\usepackage{tikz}
\usetikzlibrary{patterns}
\def\test{\tikz\filldraw[pattern=north east lines] (0,0) ellipse (2 and 1);}
\begin{document}
%[1] \test
[2] \setbox0\hbox{\test}\test
%[3] $\mathchoice{\test}{\test}{}{}$
%[4] \test\setbox0\hbox{\test}\test
%[5] \test$\mathchoice{\test}{\test}{}{}$
\end{document}
[2], [3] のときには,dvipdfmx が
dvipdfmx:warning: Object @pgfpatternobject3 used, but not defined. Replaced by null.
という警告を吐いています。
つまり,「初登場時のものが最終的な組版結果に現れず捨て去られる場合」に,パターン定義が消え去って null に置き換えられてしまうために,それ以降の使用時にもパターンが消失してしまっているようです。
pdfLaTeX や XeLaTeX ではこの問題は生じません。
dvipdfmx と事情が似ているはずの xdvipdfmx を使っている XeLaTeX で同じ問題が生じないことに注目して,pgfsys-xetex.def を参考にすればこの問題が解決できるのではないかと考えました。
その結果,次のように,\pgfsys@dvipdfmx@patternobj の定義を pgfsys-xetex.def のものに置き換えたところ,[2], [3] についてもパターンが正しく塗られることが分かりました。
\documentclass[dvipdfmx]{article}
\usepackage{tikz}
\usetikzlibrary{patterns}
\makeatletter
\def\pgfsys@dvipdfmx@patternobj#1{\pgfutil@insertatbegincurrentpagefrombox{#1}}
\makeatother
\def\test{\tikz\filldraw[pattern=north east lines] (0,0) ellipse (2 and 1);}
\begin{document}
%[1] \test
[2] \setbox0\hbox{\test}\test
%[3] $\mathchoice{\test}{\test}{}{}$
%[4] \test\setbox0\hbox{\test}\test
%[5] \test$\mathchoice{\test}{\test}{}{}$
\end{document}
理屈はよく分かっておりませんが,とりあえず対処法が見つかりましたので,ご報告しておきました。