character set, not set correctly
Interesting question. It looks like in second scenario you firstly convert default charset for table:


  To change only the default character set for a table, use this
  statement: ALTER TABLE tbl_name DEFAULT CHARACTER SET charset_name;


So then you try to MODIFY charset of your xml column. But database 
may think that this column is already in the desired charset (remember you already change default charset)

Try to use one query like this (see the same page of mysql manual): 

ALTER TABLE spool 
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;



  To change the table default character set and all character columns
  (CHAR, VARCHAR, TEXT) to a new character set, use a statement like
  this: ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name; 
  
  The statement also changes the collation of all character columns. If
  you specify no COLLATE clause to indicate which collation to use, the
  statement uses default collation for the character set. If this
  collation is inappropriate for the intended table use (for example, if
  it would change from a case-sensitive collation to a case-insensitive
  collation), specify a collation explicitly.