I like fundamental questions about the behavior and features of such a language ... Give me a reason to read the PowerShell language specification.
You can download the specified specification: 2.0 and 3.0 . See Section 7.8.1 - Equality and Relational Operators.
In the first part of the question, something is actually returned - an empty array, which is illustrated: ($false,$false -eq $true).psbase
Length : 0 LongLength : 0 Rank : 1 SyncRoot : {} IsReadOnly : False IsFixedSize : True IsSynchronized : False Count : 0
From spec -
If the value indicated by the left operand is not a collection, the result is of type bool. Otherwise, the result may be an empty unlimited 1-dimensional array containing elements that check True in comparison with the value indicated by the right operand.
For the second part, because the left operand itself is a bool, I think it will always be the result. This only happens when the right operand is a collection.
Some examples:
$true -eq 1,2,3,4 $true -eq '','','','' $true -eq '',1,$true,$false $true -eq $null,$false,1,''
They all return $true . Conversely, all of them return $false
$false -eq 1,2,3,4 $false -eq '','','','' $false -eq '',1,$true,$false $false -eq $null,$false,1,'' $false -eq $true,$true,$true
The type of left operand is very important. This wil returns $true : $false -eq 0 , because the right operand can be applied to the type of the left operand.