There's no such big difference. One difference is that your loop, in the last values, iterates over an out of range item, and their solution iterates until the last three elements:
For example with this nums=[1,4,6,1,2,3] and seq=[1,2,3], i is going to take values between 0 and len(nums)-1, that is to say in this case i=[0,1,2,3,4,5], and
your solution iterations will be something like this:
i=0
nums[i:i+3]=nums[0:3]->[1,4,6]
nums[0:3] == seq ->False
...
i=1
nums[i:i+3]=nums[1:4] ->[4,6,1]
nums[i:i+3] == seq ->False
....
#and so on
But after the last three element (i=len(nums)-3), it doesn't make sense you continue comparing because lists are going to be with different length:
i=len(nums)-3=3
nums[i:i+3]=nums[3:6] ->[1,2,3]
nums[i:i+3] == seq ->True
return True
...
i=len(nums)-2=4
nums[i:i+3]=nums[4:7] ->[2,3]
nums[i:i+3] == seq ->False
...
i=len(nums)-1=5
nums[i:i+3]=nums[5:8] ->[3]
nums[i:i+3] == seq ->False
...
#End loop
So maybe you could do it with range(len(nums)-2), the last iteration i=len(nums)-3.
The other solution, as I explain you, iterates until i=len(nums)-3, and compare item by item:
i=0
nums[i]=nums[0]-> 1
nums[i+1]=nums[1]-> 4
nums[i+1]=nums[2]-> 6
nums[i]==1 and nums[i+1]==2 and nums[i+2]==3 --->False
...
#and so on until i i=len(nums)-3
So in short, the differences are loops and that you compare slice by slice, and their solution compares item by item.