I cannot reproduce the error and this dummy code using nn.BatchNorm2d successfully exports and loads the running stats:
# script.py
import torch
import torch.nn as nn
import torchvision.models as models

# Setup
model = nn.BatchNorm2d(3)
#models.resnet18()

# Perform some dummy updates for the running stats
for _ in range(10):
    out = model(torch.randn(10, 3, 224, 224) * 5 + 10.)

# Script
model = torch.jit.script(model)
model.eval()

# Save
data = torch.ones(1, 3, 224, 224)
output = model(data)
torch.save(output, 'output.pth')

model.save('resnet_scripted.pth')

print(model.running_mean)
> tensor([6.5143, 6.5129, 6.5125])
print(model.running_var)
> tensor([16.6550, 16.6079, 16.6480])

# main.cpp
#include <torch/script.h> // One-stop header.

#include <iostream>
#include <memory>

int main(int argc, const char* argv[]) {
  if (argc != 2) {
    std::cerr << "usage: example-app <path-to-exported-script-module>\n";
    return -1;
  }


  torch::jit::script::Module module;
  try {
    // Deserialize the ScriptModule from a file using torch::jit::load().
    module = torch::jit::load(argv[1]);
    module.eval();
    std::vector<torch::jit::IValue> inputs;
    inputs.push_back(torch::ones({1, 3, 224, 224}));
    at::Tensor output = module.forward(inputs).toTensor();
    auto bytes = torch::jit::pickle_save(output);
    std::ofstream fout("libtorch_out.zip", std::ios::out | std::ios::binary);
    fout.write(bytes.data(), bytes.size());
    fout.close();

    for (const auto& b : module.buffers()) {
        std::cout << b << std::endl;
    }
  }
  catch (const c10::Error& e) {
    std::cerr << "error loading the model\n";
    return -1;
  }

  std::cout << "ok\n";
}

>  6.5143
 6.5129
 6.5125
[ CPUFloatType{3} ]
 16.6550
 16.6079
 16.6480
[ CPUFloatType{3} ]
10
[ CPULongType{} ]
ok

# compare.py
import torch

libtorch_out = torch.load('libtorch_out.zip')
python_out = torch.load('../output.pth')

print((libtorch_out - python_out).abs().max())
> tensor(0., grad_fn=<MaxBackward1>)
print(torch.allclose(libtorch_out, python_out))
> True

As you can see, the Python and C++ API will both output the same running stats and will also yield the same output.
Could you post a reproducible code snippet, which shows that the running stats are not loaded?