Why does SET ROWCOUNT not reset after GO?
Most (all?) set statements take effect at the session level...


  provides several SET statements that change the current session handling 


... with the normal set of caveats.

See SET Statements (Transact-SQL) for more details.



Quite a few of those set statements listed @ that link are obviously session-level settings, eg:


set dateformat
set fips_flagger
set indentity_insert
set statistics time/io
set nocount
set transaction isolation level


And by session-level I mean that they remain in place across batches/go statements.