One should first remember that this is largely conventional and very convenient.
When discussing the force between charges, what one wants out of these assignments is to get the same qualitative behaviour for two like charges, and a different qualitative behaviour for different charges, and giving a algebraic sign to charges does just this because the product of two negative numbers is positive, the product of two positive numbers is positive, but the product of one positive and one negative number is negative.
It is also convenient because we often need to compute the net amount of charge on an object, and we know how to add positive and negative numbers.
As far as Coulomb’s law goes, another way to handle the repulsive or attractive nature of the interaction could have been as follows: assign the number 0 to one type of charge, the number 1 to the other type. When you bring them close together they attract if the sum of their “number” is odd, and repel if it is even. This rule would not work if you need to add the charges, such as a situation where a type 0 charge would be made close to another object containing a number of charges of type 1 and type 0.
So it’s not so much that the electron charge is negative and the charge of the proton is positive (indeed the assignment of the algebraic sign could have been reversed without problem provided everything other assignment of the algebraic sign was also reversed), but it’s that these charges are of different types, and that assigning a positive or negative value to these makes it easy to algebraically add or multiply the signed quantities when needed.