Why does it behaves in this manner?
Adding an integer to a pointer† is an expression that results in a new value. The value category of the expression is rvalue.
The operand of the address-of operator must be an lvalue. Rvalues are not lvalues. You cannot take the address of an expression that returns a new value.
It is somewhat unclear what you're trying to do. Here are some examples of expressions:
&(arr[0]) // address of the first element
arr + 0 // same as above
&(arr[1]) // address of the second element
arr + 1 // same as above
&arr // address of the array.
// note that type of the expression is different,
// although the value is same as the first element
(&arr) + 1 // address of the next array (only valid if arr is
// a subarray within a multidimensional array
// which is not the case in your example)
&(arr+1) // ill-formed; has no sensical interpretation
† arr
is not a pointer; it is an array. But arrays decay to a pointer to first element in expressions that use the value, so in this context the type of the expression is indeed a pointer after the array-pointer conversion.