Is this an apache-specific issue? Would it be happy again if you said
--or anything with matching parentheses on each side of the pipe? Or would that just make it even madder? I'm trying to figure out if it's the potential for null captures-- as opposed to empty captures, which are fine-- that causes the error.
RewriteRule . 403.php [L]
Next "why" question: Why are you doing it this way instead of
RewriteRule . - [F]
? That is, why do you want the request to come through as a 200 instead of a bona fide 403?