A quanto pare sembra che i metodi magici funzionino a prescindere dal fatto che __set sia dichiarato esplicitamente.
Codice PHP:
<?php
class test
{
    public 
$tmp "ciao";
    
    function 
__construct(){
        
$this->tmp2 "mondo";
    }
}

$test = new test();

print_r($test);
?>
result print_r : test Object ( [tmp] => ciao [tmp2] => mondo )