Any and All sql clause
The result you've got return seems very normal to me. 

ANY will return TRUE when at least one value returned by the subquery compares positively. 
Logically, you could compare this to using multiple OR statements, one OR comparison for each value returned by the subquery.

ALL on the other hand requires each value returned by the subquery to compare positively. 
Logically, you could compare this to using multiple AND statements, one AND statement for each value returned by the subquery.

You stated that the subquery originally returned a single record. Therefore it didn't matter whether you used ALL or ANY. As soon as you added another record, there is a difference though. At that moment there are multiple values (ID's) in the subquery to compare to and they will logically be evaluated as OR/AND statements

Example

CREATE TABLE dbo.Tbl (ID int)   
GO  

INSERT dbo.Tbl VALUES (1),(2),(3)
GO

CREATE TABLE dbo.SubTbl (ID int)   
GO  

INSERT dbo.SubTbl VALUES (1),(2)
GO


SELECT ID
FROM dbo.Tbl 
WHERE ID = ANY(SELECT ID FROM dbo.SubTbl)
GO

-- Has the same result as ANY:
SELECT ID
FROM dbo.Tbl 
WHERE ID = 1 OR ID = 2
GO

SELECT ID
FROM dbo.Tbl 
WHERE ID = ALL(SELECT ID FROM dbo.SubTbl)
GO

-- Has the same result as ALL:
SELECT ID
FROM dbo.Tbl 
WHERE ID = 1 AND ID = 2
GO