¿Por qué llamar a una puta a alguien se considera ofensivo, pero llamar a alguien un perro no lo es?

Es una muy buena pregunta y vale la pena pensarlo.
La respuesta está en el uso y el significado que hemos asociado con la palabra. La perra se ha asociado con la puta, aunque es tan equivalente al perro como la mujer al hombre. Pero cuando escuchamos la palabra, solo pensamos lo contrario.
La palabra no es ofensiva por sí misma, pero es asociación.