Absolutely true! We also can't ignore the role of tooling, frameworks, and even tradition in shaping how a language is used. If you used C++ with MFC, your impression is probably of it being very OO. Similarly, one might feel that the Python language is designed for data analysis.
Even in languages like Java and C#, it's trivially easy to build up libraries of methods that make everything act like a procedural program. But I think at some point average programmers (myself included) rely on the weight of convention to make it easier for our peers to understand what we're doing and to keep ourselves from going horribly wrong. So we usually stick to the established precedent of a language, even though there are broader possibilities.