I don't agree with neither of the two proposals.

Costants whould be in their **pertinent classes**, **not in an all-constant class** in **either of the two forms** proposed.

**There shouldn't be constants-only classes/interfaces.**

There should exist a class `CreditCard` (not an internal class). This class/interface has methods relative to credits cards as well as the constants `UI_EXPIRY_MONTH` and `UI_ACCOUNT_ID`.

There should exist a class/interface `BankAccount` (not an internal class). This class/interface has methods relative to bank accounts as well as constant `UI_ACCOUNT_ID`.

For example in the Java API every class/interface has its constants. They are not in a Constants class/interface with hundres of costants, either grouped into inner clases or not.

For example these constants pertinent to result sets are in the interface `ResultSet`. 

    static int	CLOSE_CURSORS_AT_COMMIT 
    static int	CONCUR_READ_ONLY 
    static int	CONCUR_UPDATABLE 
    static int	FETCH_FORWARD 
    static int	FETCH_REVERSE 
    static int	FETCH_UNKNOWN 
    static int	HOLD_CURSORS_OVER_COMMIT 
    static int	TYPE_FORWARD_ONLY 
    static int	TYPE_SCROLL_INSENSITIVE 
    static int	TYPE_SCROLL_SENSITIVE 

This interface has methods signatures relative to result sets, and implemented classes implement that behavior. They are not mere constant-holders.

These constants pertinent to UI actions are in the interface `javax.swing.Action`

    static String	ACCELERATOR_KEY 
    static String	ACTION_COMMAND_KEY 
    static String	DEFAULT 
    static String	LONG_DESCRIPTION 
    static String	MNEMONIC_KEY 
    static String	NAME 
    static String	SHORT_DESCRIPTION 
    static String	SMALL_ICON 

Implementing classes have behavior relative to UI actions, they are not mere constant holders.

I know at least one "constants" interface (`SwingConstants`) with no methods but it doesn't have hundres of costants, just a few, and they are all related to directions and positions of UI elements:

    static int	BOTTOM 
    static int	CENTER 
    static int	EAST 
    static int	HORIZONTAL 
    static int	LEADING 
    static int	LEFT 
    static int	NEXT 
    static int	NORTH 
    static int	NORTH_EAST 
    static int	NORTH_WEST 
    static int	PREVIOUS 
    static int	RIGHT 
    static int	SOUTH 
    static int	SOUTH_EAST 
    static int	SOUTH_WEST 
    static int	TOP 
    static int	TRAILING 
    static int	VERTICAL 
    static int	WEST 

I think constants only classes are not good OO design.