Vale lembrar que, caso não seja possível alterar as funções, ainda dá pra passar um dicionário:

def calcular_imposto(valor_bruto, aliquota, deducoes, dependentes, estado):
    # faz algo com os valores...

def calcular_salario_liquido(valor_bruto, aliquota, deducoes, dependentes, estado):
    # faz algo com os valores...
# mais trocentas funções com os mesmos parâmetros...

params = { 'valor_bruto': 10, 'aliquota': 20, 'deducoes': 3, 'dependentes': 4, 'estado': 'SP' }
calcular_imposto(**params)
calcular_salario_liquido(**params)

O que faz a "mágica" são os dois asteriscos antes de params: eles fazem o unpacking do dicionário. No exemplo acima, ele faz com que o parâmetro valor_bruto receba o valor 10, aliquota receba o valor 20 e assim por diante.

Claro que se vc já tiver os valores em variáveis separadas, talvez não compense criar o dicionário. Neste caso eu ia preferir usar uma das soluções acima: a tupla que eu sugeri (caso não possa mudar as funções) ou uma classe (mas aí teria que alterar todas as funções, e dependendo do caso pode valer a pena).

De qualquer forma, esta é uma das possibilidades, mas acho que só seria "melhor" caso o dicionário já estivesse criado (por exemplo, se ele veio de algum lugar que já retorna um JSON com todos os valores).