Are serializeQueryParam and deserializeQueryParam hooks public?

According to the documentation, serializeQueryParam and deserializeQueryParam hooks are private. But I saw suggestions to override this hooks.

Further, why is the default implementation doesn’t serialize plain javascript objects (such as {x:2,y:4})?

I found the following code from the repo:

  _serializeQueryParam(value, type) {
    if (type === 'array') {
      return JSON.stringify(value);
    }

    return `${value}`;
  },

Why is it not returning JSON.stringify(value) for all objects? What are the side effects of overriding the hooks by using JSON.stringify(value)?