Try:
;WITH Groups AS (SELECT
*,
ROW_NUMBER() OVER (PARTITION BY BI, t.MEMBER_ID,ID ORDER BY StartDate,EndDate) AS RN,
LAG(EndDate,1) OVER (PARTITION BY BI, t.MEMBER_ID,ID ORDER BY StartDate, EndDate) AS PreviousEndDate
FROM @test t)
SELECT BI, x.MEMBER_ID, ID, MIN(StartDate) AS StartDate, MAX(EndDate) AS EndDate
FROM (SELECT
*,
CASE WHEN Groups.PreviousEndDate = DATEADD(DAY,-1,StartDate) THEN 0 ELSE 1 END AS IslandStartInd,
SUM(CASE WHEN Groups.PreviousEndDate =DATEADD(DAY,-1,StartDate) THEN 0 ELSE 1 END) OVER (ORDER BY Groups.RN) AS IslandId
FROM groups) x
GROUP BY BI, X.MEMBER_ID, ID, x.IslandId