以下のように空文字列に対し /abc\A?/ はマッチしますが
/(?:a)bc\A?/ はマッチしません。

a と (?:a) の違いでそのような変化が生じるのは変ではないでしょうか。

% ./ruby -ve 'p(/abc\A?/.match(""))'      
ruby 1.8.7 (2008-06-08 patchlevel 5000) [i686-linux]
#<MatchData "">

% ./ruby -ve 'p(/(?:a)bc\A?/.match(""))'
ruby 1.8.7 (2008-06-08 patchlevel 5000) [i686-linux]
nil
-- 
[田中 哲][たなか あきら][Tanaka Akira]