This is one that confuses a lot of people.
While the receiver was OOB, he was not OOB when he touched the ball. To be OOB, the player has to be touching OOB. He was onbounds when he made the catch because the catch was not complete until his feet touched ground.
This ain't basketball where you are where you were until you get where you're going.