I think this is rthe reason:
"WITH (ROWLOCK) provides a query hint to the optimizer. If SQL so deems, it can still escalate a rowlock into a page lock or a table lock. It will normally only do so if you're hitting a very large number of rows though - it's basically trying to save you from consuming extra resources via scores of row locks."
This quote was taken from this MSDN forum: http://social.msdn.microsoft.com/Forums/sqlserver/en-US/60238304-04e8-4f98-84d1-3ddf1ed786a9/why-the-entire-table-is-locked-while-with-rowlock-is-used-in-a-update-statement
Creating an index for the column USERID
(like Martin Smith said) could help because the SQL optimizer can use the index and conclude that is best the row lock that a full scan.