There are two places where the "guest" user is created. Both admin/index.php and login/index.php are able to create such record in the user tables.
But when the user is created from login/index.php, the mnethostid isn't set, so defaults to 0, and with that value, it doesn't work anymore.
So plan is:
1) Create one new create_guest_user() function under moodlelib.php with correct settings.
2) Use it from admin/index.php and login/index.php
3) Provide a small upgrade to fix broken sites (I've seen some of them).