No, la cosa no es así, revisa el código fuente que te genera el navegador (Firefox, Chrome, Opera, etc.) y verás que ahí no hay código PHP, en lugar de
<?php echo "'hola'"; ?> verás que sólo dice
'hola';
Porqué?, sencillo, PHP se ejecuta en el servidor y ejecutará todo lo que esté dentro de <?php y ?>, de manera que al llegar al navegador es tan sólo HTML + CSS + Javascript.
Por cierto, el primer código no funciona porque hay error de sintáxis en Javascript, por ejemplo, supongamos que
$mensaje en PHP es 'Hola, cómo estás', el resultado de tu código sería:
Código PHP:
Ver original<html>
<head>
<script type='text/javascript'>
function asgg(){
Hola, cómo estás
}
</script>
</head>
<body onload="asgg()">
</body>
</html>
Tendrías que poner el mensaje entre comillas y asignarlo a una variable o enviarlo como parámetro a una función, tal como hiciste en el segundo ejemplo.