Il perche' e' semplice: dopo il primo controllo (che e' verificato) $string vale "160px". Il problema e' che dopo sullo stesso valore esegui altri controlli e $string viene trasformato in 160 (visto che il controllo e' una disuguaglianza numerica) e quindi e' verificato il terzo controllo che fa diventare $string "120px".

Suggerimento di refactoring:
Codice PHP:
function rating_piccoli$string ) {
    if ( 
$string <     ) return $string;
    if ( 
$string <=   50 ) return "160px";
    if ( 
$string <=  150 ) return "140px"
    if ( 
$string <=  200 ) return "120px"
    if ( 
$string <=  300 ) return "100px"
    if ( 
$string <=  500 ) return "80px"
    if ( 
$string <= 1000 ) return "60px"
    if ( 
$string <= 1500 ) return "40px"
    if ( 
$string >  1500 ) return "20px"