Why do I have two collations in mysqldump, under stored procs?
(Some of this answer is 'guesses'.)

Each database has a default charset and collation.  That is used only for providing the charset and/or collation for a CREATE TABLE when you don't explicitly provide it for the table.  (And perhaps for Stored Routines.)

Why are there two ALTERs in that dump?  I don't know.  Perhaps it would make sense if there were a CREATE PROCEDURE between them.

My point is that your question is about something that is essentially irrelevant.

The SHOW VARIABLES output does not say "The database seems all utf8".  It does say that certain defaults are utf8 and that connections will assume the client is using utf8 unless otherwise specified.