In addition to potential bounce issues,
the current code does not ensure that the readings are synchronized atomically
nor does it ensure that values printed represent the same point in time.
The combination of both has the potential to create some misleading values
In the ISR, the bits in the PINK register are examined through time
rather than all at the same time.
If you want the pinValx variables to represent a the same point in time
you will need to read the PINK value and put it into a temporary variable
and test against the temporary.
This also applies to the values you print in the foreground loop
as the values printed don't represent values from the same point in time.
For example, you print PINK and then the pinValx values.
Since interrupts are enabled, those values could change at any time
and so there is no guarantee that values represent the state at the same point in time
since time passes while each of the values is printing.
Also keep in mind that when using the Serial device that while there is
a small buffer (16 or 64 bytes depending on processor) on the transmitter,
that if you send enough data fast enough you will fill the s/w output buffer
and then be throttled (blocked) by having to wait for the characters to drain out
the physical serial port.
This adds to the span of time that separates the printed pin readings in your loop() code.
Give your current code, this is definitely happening.
At 115200, since you are printing 12 characters that means you are blocked
for about 1ms each time you print the pinValx value as you wait for space
in the tx buffer for the 12 characters.
So there is at least 8ms between printing pinVal1 and pinVal8
If you want a single snapshot of the values in loop() you will need to mask interrupts,
and move all the values into temporary locals, then print the temporary locals
after you re-enable interrupts.
You might want to change the code to avoid the constant printing
by only printing when something changes.
Just a small nit but I'd use pinVal0 to pinVal7 vs pinVal1 to pinVal8 so
that there is no confusion over bit names vs bit position. It doesn't affect
the code just seems to be clearer (at least to me).