On a datawarehouse scenario I believe is better to follow the surrogate key path. Two reasons:
- You are independent of the source system, and changes there --such as a data type change-- won't affect you.
- Your DW will need less physical space since you will use only integer data types for your surrogate keys. Also your indexes will work better.