This is the correct way to do this, however keep in mind that arrays are zero-indexed (meaning the first element is actually element #0).
The reason your original code wasn't working was you created an array that contains Vector3 objects. (See link to learn more about what an object is) When you set the value at index 1 of the array, you didn't create an object, hence why your code worked when you used new Vector3(x, y, z) -- you created an object which could then be held in the array that stores that type of object.
In your case, you have created an array that contains 3 elements.
To set the first element, you would use:
hotelLocation[0] = new Vector3(436.8632f, 216.6585f, 104.1104f);
To set the second and third elements respectively, you would use:
hotelLocation[1] = new Vector3(componentX, componentY, componentZ);
hotelLocation[2] = new Vector3(componentX, componentY, componentZ);
Since you created an array that contains 3 elements, if you were to attempt to set the value of index #3, you would get an IndexOutOfRangeException because the array is zero-indexed and the size is three so the largest index of the array is 2.
hotelLocation[3] = new Vector3(componentX, componentY, componentZ); // Throws IndexOutOfRangeException
Output:
Unhandled Exception:
System.IndexOutOfRangeException: Index was outside the bounds of the array.