Unabhängig vom fehlenden Minimalbeispiel denke ich dein Problem zu sehen. Du musst beachten, dass ein Leerzeichen zwischen zwei Befehlen einen einfachen Abstand darstellt. Leerzeichen am Beginn einer Zeile werden ignoriert. Leerzeichen und Zeilenumbrüche am Ende der Zeile werden jedoch implizit in ein Leerzeichen umgewandelt.
aus
Open in writeLaTeX
\foo\bar
wird dann implizit
Open in writeLaTeX
\foo\bar
Das kann man umgehen in dem man einfach nachfolgende Leerzeichen oder Zeilenumbrüche mit % auskommentiert.
aus
Open in writeLaTeX
\foo%\bar
wird dann
Open in writeLaTeX
\foo\bar
Exakt dies solltest du bei deiner Definition von lehead und rohead beachten. Mal als Beispiel:
Open in writeLaTeX
\lehead{\pagemark%\rule[-2.5mm]{1pt}{6mm}%\leftmark}
Die Leerzeichen sollten verschwunden sein (Vergleiche mal mit der Variante ohne Kommentare).