Я бы пошел с Полиморфной ассоциацией, так как уже есть достаточно полей, которые не относятся ко всем / большинству элементов. STI просто потратит много места, но, игнорируя оптимизацию, это также очень жесткая конструкция, поскольку наиболее естественным способом расширения этой конструкции, когда требуется больше полей, будет добавление их в таблицу.
С другой стороны, полиморфная ассоциация указывает только контракт, которому должны следовать все разработчики. В этом случае в контракте говорится только о том, что предмет должен оплачиваться, и он позволяет каждому отдельному виду предметов развиваться независимо. Если между этими различными классами есть общая логика, может быть лучше просто преобразовать ее в модуль и включить ее.