I do not know how to patch \rowcolor (and its children), but I provide a new \Rowcolor[<pad>]{<color>} macro:
<color> stands for the color used, and
<pad> for the padding before the first column (usual \tabcolsep, which is the default) This is the width of the stuff that is @{dded} before the first row.
A note on the latter sentence: You specified @{\extracolsep{\fill}}ll which removed the \tabcolsep before the first column. The original \rowcolor can’t handle that as well, see your picture, which is the reason you asked for making the rule longer when you have in fact said, that it should be shorter! (More on that: colortbl: \rowcolor in tables with \begin{tabular}{@{}ccc@{}})
If you use something like @{}<…>, you need to use \Rowcolor[]{<color>} (which is the same as \Rowcolor[0pt]{<color>}).
Code
\documentclass[a4paper, 12pt]{report}
\usepackage{colortbl}
\usepackage{etoolbox}
\makeatletter
\newlength{\qrr@dimen@}
\expandafter\pretocmd\csname tabular*\endcsname{\setlength{\qrr@dimen@}{#1}}{}{}
\newcommand*{\Rowcolor}[2][\tabcolsep]{%
\ifx\relax#1\relax\else
\kern-\the\dimexpr#1\relax
\fi
\makebox[0pt][l]{%
\fboxsep=0pt
\colorbox{#2}{%
\strut\kern\qrr@dimen@
}%
}%
\ifx\relax#1\relax\else
\kern\the\dimexpr#1\relax
\fi
\ignorespaces
}
\makeatother
\begin{document}
\noindent
\begin{tabular*}{.9\linewidth}{l@{\extracolsep{\fill}}l}
\rowcolor{yellow} \multicolumn{1}{>{\columncolor{green}[\tabcolsep][\tabskip]}l}{OS} & Features \\ \hline
\Rowcolor{yellow} OS & Features \\ \hline
iOS & blah blah. \\
Android & blah blah. \\
\end{tabular*}
\end{document}
Output

\begin{tabularx}{0.90\textwidth}{lXl}with an empty second column. – Qrrbrbirlbel Jan 07 '13 at 04:35