The order is not guaranteed by the documentation. However, if the order was not guaranteed, and it ever changed for any reason whatsoever, there'd be a lot of angry clients out there. For example, consider this answer. If the order were to change, we would have no way to identify the index of a picklist value relative to other picklist values, and therefore it would break this code. Code that businesses rely on for business processes. Many others here and in other communities have advocating using this method, and there's various samples of doing so on blogs, in the documentation, and elsewhere.