¡SOLUCIONADO!
El problema estaba en esta línea:
G1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more
En cuanto sustituí el F9000 por un valor más bajo cualquiera de las combinaciones que había probado funcionó perfectamente y desplazó el extrusor al origen.
Parece que en mi caso cuando le pido al motor del extrusor esa velocidad tan elevada se bloquea y a partir de ahí los comandos de movimiento a los otros motores tampoco se ejecutan (cosa que no entiendo, porque en el mismo gcode existen órdenes de movimiento anteriores a esa misma velocidad, aunque nunca dirigidas al motor del extrusor).
Seguiré investigando, a ver si me aclaro un poco más.