Does freeing memory (as per Motoko or Rust) decrease canister memory usage (and thus lead to decreased storage costs)?
Unfortunately not. Wasm memory can only be increased, not decreased (see Wasm specification).
Practically speaking, the only way to reduce memory usage is to reinstall the canister. This will completely remove the old heap memory during the reinstallation process.