After spending hours of debugging my program, I found that
Collect threads over
Rule. While the documentation (under Details and Options) says that it threads over "lists ... equations, inequalities and logic functions",
Rule does not count (in my mind) as one of those.
In order to avoid any further unexpected behavior, I need to know exactly which heads
Collect threads over. Does anyone know?