То, о чем Вы говорите, справедливо только для динамически типизированных языков, таких как javascript. Это там можно сделать что-то подобное
var predicate = true;
var anyMethod = function() { ... }
if(predicate && anyMethod){ ... }
В C# Вы себе такого позволить не сможете, там логические операторы можно применять только к типу bool. В случае C# anyMethod будет, наверное, delegate. В C# придется написать так
if(predicate && anyMethod != null){ ... }
Никакой матери спецификаций нет, каждый язык имеет свою спецификацию. Но такие языки как C++, С#, Java javascript считаются си-подобными языками, т.е. с точки зрения синтаксиса, являются подмножеством языка С. Поэтому все эти языки могут иметь сходства синтаксиса и может показаться что так должно быть везде. Но в других языках синтаксис операторов && и || может выглядеть по другому или его вообще может не быть и остаться только логические & и |.