With the following QML the names setter of each component is entered twice both with a given value of ["one", "two"]. Without using customType.names the setter is only entered once.
If id: customType2 is defined above id: customType then each setter is only entered once.
FWIW I use Qt with PyQt5 and here is my test case. https://gist.github.com/Siecje/f19c737c8cdbb72e468b18c2da5a6a6f
Lucijan from the #qt-quick freenode IRC channel created a C++ version which shows the behaviour, which I have attached.