Существуют такие сценарии при которых функция возвращает значения, которые нельзя описать хинтом. Грубо говоря вот так
/**
* @return Product|false
*/
public function getProduct(int $id)
{
// ...
}
Как правило это неправильно (Битрикс особенно любит так делать), зато док-блок точно описывает что может вернуть метод. Здесь, кстати, еще один тонкий момент: можно написать не bool, а именно false, потому что хоть тип и bool, значения true там не будет никогда. Короче нужны эти штуки)