Here's a pure TSQL method to compare with Lowell's string-concatenation method.
;WITH Rates AS (SELECT worker_id, rate_code, rate_count = COUNT(*) OVER(PARTITION BY worker_id)
FROM #worker_rate r)
SELECT
rate_group = DENSE_RANK() OVER(ORDER BY r1.worker_id),
r2.worker_id
FROM Rates r1
INNER JOIN Rates r2
ON r2.worker_id >= r1.worker_id
AND r2.rate_code = r1.rate_code
AND r2.rate_count = r1.rate_count
GROUP BY r1.worker_id, r2.worker_id
HAVING MAX(r1.rate_count) = COUNT(*)
For fast, accurate and documented assistance in answering your questions, please read this article.
Understanding and using APPLY, (I) and (II) Paul White
Hidden RBAR: Triangular Joins / The "Numbers" or "Tally" Table: What it is and how it replaces a loop Jeff Moden