Syntax highlighting of verbatim-like environments with optional arguments was fixed upstream and works out-of-the-box since AUCTeX 11.88. There is no more need to apply the hack I previously suggested in the original answer (see below).
If you have file parsing enabled (which is highly recommended anyway, in order to exploit all features of AUCTeX) and you loaded listings
package in your document, AUCTeX will automatically recognize lstlisting
as a verbatim-like environment and highlight it correctly, including the optional argument.

This works also if there is a pair of brackets inside the optional argument (for example the dialect of the language):

or if the newline after the \begin{environment}
is commented by a %
character

Original answer (needed only for AUCTeX 11.87 or previous versions)
Inside the font-latex-set-syntactic-keywords
function, defined in font-latex.el
, replace
(add-to-list 'font-latex-syntactic-keywords
`(,(concat "^[ \t]*\\\\begin *{\\(?:" verb-envs
"\\)}.*\\(\n\\)")
(1 "|" t)))
with
(add-to-list 'font-latex-syntactic-keywords
`(,(concat
"^[ \t]*\\\\begin *{\\(?:" verb-envs "\\)}[\t ]*\\(?:%.*\n[\t ]*\\)?"
"\\(?:\\[[^\]\[]*\\(?:\\[[^\]\[]*\\][^\]\[]*\\)*\\]\\)?"
"\\(\n\\)")
(1 "|" t)))
\\begin{lstlisting}([.*])?
, but I don't know where I'd put it (or if this would work, to be perfectly honest). – Sean Allred Apr 4 '14 at 18:47font-latex-set-syntactic-keywords
. – giordano Apr 4 '14 at 18:59