Eu finalmente puxei o código-fonte para o MySql Connector / .NET e descobri que se MySqlCommand.Connection.Settings.IgnorePrepare =true (que é o padrão!), então chamar Prepare não é uma operação.
A maneira de corrigir isso é definir explicitamente IgnorePrepare como false na cadeia de conexão. Isso pode ser feito facilmente com um MySqlConnectionStringBuilder usando o seguinte trecho de código:
MySqlConnectionStringBuilder connBuilder = new MySqlConnectionStringBuilder();
// .. set up the rest of your connection
connBuilder.IgnorePrepare = false;
MySqlConnection conn = new MySqlConnection(connBuilder.ToString());