Actually, if you look on it from a technical perspective, it makes perfect sense. Element data takes up half of one byte, so it can have a range of 1 to 16 (0000 to 1111 in binary). The normal elements, plus the 'weapon' elements (shoot, punch, etc.) make up a grand total of 15. That leaves a single unassigned value, which is the hidden element. When something in-game isn't assigned an element, it by default takes element 16 (F in hex). If the 'non elemental' flag isn't turned on, that means it has the 'hidden' element. This is presumably why materia that don't have elemental properties set grant 'hidden' when used with the Elemental materia.