Stai usando un oggetto per fare una cosa per cui non e` espressamente previsto: Usi un link per far partire un JS.

Se il JS ritorna true o non ritorna nulla, il link viene seguito, il che implica che la pagina viene scrollata all'inizio, nella maggior parte dei browser.

Se il return false lo metti nella funzione, devi applicare il return nella chiamata:
onclick="return addSmile('{:-)}');"