If you compare the performance of the two expressions, 2 clearly wins:
cmpx'{∘.=/⍳¨ ⍵ ⍵}1000' '{⍵ ⍵ ⍴ 1, ⍵⍴0}1000'
{∘.=/⍳¨ ⍵ ⍵}1000 → 2.4E¯3 | 0% ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕
* {⍵ ⍵ ⍴ 1, ⍵⍴0}1000 → 5.7E¯5 | -98% ⎕
If you consider what the interpreter has to do when processing the two expressions, (2) is also far less work: catenate a scalar to a vec and reshape the result, whereas in (1) it has to create two vectors, build an outer product with an equal-comparison. Plus it involves "each" which is (by some) not considered "pure APL"... And obviously if you think about the ideas implemented by the two algorithms, (2) is much nicer and more elegant. But that's only my opinion ;)