Because the MD5 hash has moved the stream to EOF for both file1 and file2. You need to rewind the streams back before reusing them:
byte[] hash1 = md5.ComputeHash(file1);
byte[] hash2 = md5.ComputeHash(file2);
file1.Seek(0, SeekOrigin.Begin);
file2.Seek(0, SeekOrigin.Begin);
byte[] hash3 = sha1.ComputeHash(file1);
byte[] hash4 = sha1.ComputeHash(file2);