Seems like it has something to do with alignment constraints which both C structs and sequence types have.
It also suggests a workaround to get the desired result:
type :: int_seq
sequence
integer :: i
end type
integer,target::i
type(int_seq),pointer::i_ptr
i=1
i_ptr => view(i) ! Now it works
print*, i_ptr%i
It does look like a loophole in the Wirth sense.