After disabling WPML multi currency, the currency is still handled by the WPML

First at all, I just use WPML one time and I really don’t liked it.

It comes to me, that you maybe leave some po/mo files in the wp-content/languages/woocommerce-multilingual/ or wpml one.
I found on a thread saying

  1. Visit WPML > Theme and plugin localization > select ‘Translate using .mo files’ > select Automatically load the theme’s .mo file
    using ‘load_theme_textdomain’. > Enter textdomain > Save
  2. The translations for wordpress and the admin screen are those to be placed in wp-content/languages – Download these files here:
    http://wpcentral.io/internationalization/
  3. Your theme’s language should be put in a themes/awr-theme/languages/ directory
  4. Finally the naming of this file must match the language options set on your site. If your using Spanish in it’s without changing the
    locale setting, WPML is associating es_ES.mo. You can review those
    options if you visit WPML > Languages > Site Languages > Edit
    Languages.

Why not, this will explain this ghost plugin behaviour !? As woocommerce-multiligual compatibility check for other plugin option… Add with some custom template files, translation string, that can be understood.

Depending on how you deactivate (and delete ?) the plugin, is it possible that some options settings of multi-currency plugins remains in your install ?

Are you sure that any code (yours or another plugin or theme) is not calling class-wcml-bookings.php directly (without is_plugin_active() ), and by this way reactivate some actions and filter ? But I really doubt about this fact, as the class is not initiate, all filter reference will br broken.

In case I’m wrong, about the filter you are talking about line 163

add_filter( 'get_post_metadata', array( $this, 'filter_wc_booking_cost' ), 10, 4 );

Did you try to remove it with remove_filter() ?

remove_filter('get_post_metadata', 10, 4);

Writing this I lean more on mo/po way than filter.

Hope it helps!