Я не уверен, что я бы сделал это действительно, но если вы хотите, я думаю, что лучший способ - это добавить две оси (также, чтобы вы могли видеть, насколько они в действительности высокие). Например, см. Здесь: https://matplotlib.org/gallery/api/two_scales.html
import numpy as np
from matplotlib import pyplot as plt
fig, ax1 = plt.subplots()
ax1.hist(a, histtype='step', color='b', lw=2, density=True)
ax1.tick_params(axis='y', labelcolor='b')
ax2 = ax1.twinx()
ax2.hist(b, histtype='step', color='r', lw=2, density=True)
ax2.tick_params(axis='y', labelcolor='r')
Это дает следующий вывод (который, я думаю, выглядит хуже, чем тот, который вы получили; я также изменил кумулятивный = True на плотность = True на первом графике, чтобы соответствовать графику, который вы предоставили):

Кроме того, строго говоря, это не гарантирует, что максимумы действительно идентичны. Если вы хотите сделать это, вы можете форсировать это, например,
import numpy as np
from matplotlib import pyplot as plt
fig, ax1 = plt.subplots()
n1, _, _ = ax1.hist(a, histtype='step', color='b', lw=2, density=True)
ax1.tick_params(axis='y', labelcolor='b')
ax2 = ax1.twinx()
n2, _, _ = ax2.hist(b, histtype='step', color='r', lw=2, density=True)
ax2.tick_params(axis='y', labelcolor='r')
ax1.set_ylim([0, n1.max()*1.1])
ax2.set_ylim([0, n2.max()*1.1])